This question sauf que je veux demander comment puis-je faire ma photo ne pas perdre le focus sur la touche de la touche fléchée. Il obtient le focus quand je l'ai surchargé et ai placé TabStop = vrai mais les touches de flèche me donnent des problèmes.Faire un PictureBox ne pas perdre le focus sur les touches fléchées?
Répondre
Cela nécessite de surcharger la méthode IsInputKey() du contrôle. Un peu de chirurgie supplémentaire est nécessaire pour laisser la boîte d'image se concentrer en premier lieu. Commencez par ajouter une nouvelle classe à votre projet, font ressembler à ceci:
using System;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
class MyPictureBox : PictureBox {
public MyPictureBox() {
SetStyle(ControlStyles.Selectable, true);
SetStyle(ControlStyles.UserMouse, true);
this.TabStop = true;
}
}
Cela garantit que le contrôle peut obtenir la mise au point et peut être à onglets. , Vous aurez à côté de défaire les attributs pour les propriétés TabStop et TabIndex afin que l'utilisateur peut définir l'ordre de tabulation:
[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
public new int TabIndex {
get { return base.TabIndex; }
set { base.TabIndex = value; }
}
[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
public new bool TabStop {
get { return base.TabStop; }
set { base.TabStop = value; }
}
Ensuite, vous devez préciser à l'utilisateur que le contrôle a le focus si elle saura à quoi vous attendre lors de l'utilisation des touches du curseur:
protected override void OnEnter(EventArgs e) {
this.Invalidate();
base.OnEnter(e);
}
protected override void OnLeave(EventArgs e) {
this.Invalidate();
base.OnLeave(e);
}
protected override void OnPaint(PaintEventArgs pe) {
base.OnPaint(pe);
if (this.Focused) {
Rectangle rc = this.DisplayRectangle;
rc.Inflate(-2, -2);
ControlPaint.DrawFocusRectangle(pe.Graphics, rc);
}
}
Et enfin vous substituez IsInputKey() afin que le contrôle peut voir les touches fléchées:
protected override bool IsInputKey(Keys keyData) {
if (keyData == Keys.Up || keyData == Keys.Down ||
keyData == Keys.Left || keyData == Keys.Right) return true;
return base.IsInputKey(keyData);
}
Compile. Déposez le nouveau contrôle du haut de la boîte à outils sur votre formulaire.
- 1. SDL ne détecte pas les touches fléchées
- 2. Les touches fléchées ne fonctionnent pas
- 3. JPopupMenu ne doit pas perdre le focus
- 4. touches fléchées ne fonctionne pas dans fancybox
- 5. Naviguer avec les touches fléchées
- 6. Utilisez les touches fléchées pour déplacer le focus sur le contrôle suivant
- 7. Utilisez les touches fléchées C++?
- 8. Les touches fléchées comme touches d'accès?
- 9. java - perdre le focus
- 10. Pourquoi les touches fléchées n'obtiennent pas le message WM_KEYDOWN VC++?
- 11. Touches fléchées avec NSTableView
- 12. onchange sans perdre le focus?
- 13. Touches fléchées de traçage
- 14. Les flèches obtenant les touches fléchées
- 15. C# et touches fléchées
- 16. Les touches fléchées et le changement de focus du contrôle accrochent l'application
- 17. C# forme perdre le focus
- 18. JavaScript perdre focus
- 19. Déplacement de JLabel avec les touches fléchées
- 20. Le contrôle Windows Forms de databound ne reconnaît pas les modifications avant de perdre le focus
- 21. Arrêter les touches fléchées pour faire défiler les onglets sur TabControl C# Winform
- 22. textmate déplacer le curseur sans utiliser les touches fléchées
- 23. touches fléchées ne défilant pas sur IE7 pour notre site web
- 24. Les touches fléchées ne fonctionnent pas dans les scripts de ligne de commande irb/ruby?
- 25. Codes-clés des touches fléchées
- 26. Silverlight éviter de perdre le focus sur datagrid
- 27. Comment faire défiler vers le bas dans une table html en utilisant les touches fléchées?
- 28. Configurer 'Enregistrer sur perdre le focus' dans Visual Studio 2010
- 29. Reconnaissance des touches fléchées avec stdin
- 30. Silverlight 3 - TreeView n'obtenant pas le focus
Hey je remarque quand je clique droit je n'obtiens pas le foyer quand je fais clic gauche je fais. Savez-vous comment faire pour que tout clic se concentre? –
C'est un comportement normal, essayez-le avec un bouton par exemple. Vous pouvez remplacer OnMouseDown et appeler this.Focus() pour le changer. –
Hans! cela, juste là, était la vie sauve. bien peut-être pas, mais au moins les heures et les cheveux blancs économisent! –