Dans WinForms, pour définir le focus sur un contrôle spécifique, je semble toujours finir par appeler Control.Select()
et Control.Focus()
pour le faire fonctionner.
Quelle est la différence, et est-ce la bonne approche?
Dans WinForms, pour définir le focus sur un contrôle spécifique, je semble toujours finir par appeler Control.Select()
et Control.Focus()
pour le faire fonctionner.
Quelle est la différence, et est-ce la bonne approche?
Le focus est une méthode de bas niveau destinée principalement aux auteurs de contrôles personnalisés. Au lieu de cela, les programmeurs d'applications doivent utiliser la méthode Select ou la propriété ActiveControl pour les contrôles enfants ou la méthode Activate pour les formulaires.
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus.aspx
Juste pour ajouter à ce fil, j'ai constaté que lors de l'écriture d'un contrôle utilisateur qui se sont déplacés d'autres contrôles d'un formulaire à un autre (formulaire nouvellement créé). La forme originale peut plus sélectionner le contrôle, mais en utilisant l'accent autorisés à le faire. Je pense que cela met en valeur les réponses sur les niveaux de ces méthodes de travail à la. Mais cela signifie aussi qu'il n'est pas simple suffisant pour dire que l'utilisation de Sélectionner au plus haut niveau depuis sélectionner n'a plus fonctionné comme prévu sur l'original du formulaire (pas qu'il devrait être je l'ai placé dans une forme différente - j'accepte que)
Par expérience personnelle, j'ai écrit un contrôle utilisateur hériter de la Windows ComboBox. J'ai eu à écrire le code pour remplacer l' OnEnter
événement et j'ai eu une déclaration de là en disant:
If Me.Focused Then ... Else ...
Toutefois, malheureusement, il a renvoyé le résultat inattendu. Si j'ai appelé, MyCustomerComboControl.Select
(soit en Charge, Montré ou d'activer les événements), il appelle l' OnEnter
méthode, mais a échoué à enregistrer il avait le focus (c'est à dire Centrée était Faux), mais si j'ai appelé le Focus, il a travaillé. En outre, Select
de travail que si le formulaire a été ouvert c'est à dire si j'ai choisi un autre contrôle, puis re-sélectionné le contrôle d'origine tout était bien. Donc, en toute autre circonstance autre que mon scénario, utilisez Select
, car il le dit ci-dessus.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.