Savoir qui a obtenu le focus dans un foyer Perdu événement
Est-il possible de savoir qui a mis le focus dans un foyer perdu événement?
Compact Framework ne dispose pas d'un ActiveControl
, donc je ne sais pas comment dire à un qui a le focus.
Vous avez indiqué dans la réponse ci-dessous les commentaires que vous souhaitez utiliser l'événement LostFocus pour afficher un message basé sur le contrôle du focus. Pourquoi ne pas simplement utiliser l'événement GotFocus de la commande en question à la place?
Bon point. Plus que de montrer un message, je devais aussi faire un peu de traitement sur la valeur de la commande est en cours de gauche. Pourrait être fait dans le GotFocus, mais il serait un peu maladroit.
Bon point. Plus que de montrer un message, je devais aussi faire un peu de traitement sur la valeur de la commande est en cours de gauche. Pourrait être fait dans le GotFocus, mais il serait un peu maladroit.
OriginalL'auteur Vaccano | 2010-05-24
Vous devez vous connecter pour publier un commentaire.
C'est la solution qui a fini par travailler:
OriginalL'auteur Vaccano
Une option serait de interop l'API réception focus
Cela va vous donner la poignée de la fenêtre qui a actuellement le focus d'entrée, vous pouvez ensuite récursivement itérer le contrôle de l'arbre afin de trouver le contrôle avec cette poignée.
wow, que de sons... compliquée. Donc, pour résumer, si je l'appelle GetFocus au mauvais moment (comme l'événement LostFocus) il va effectivement changer le focus actuel plutôt que de simplement me dire ce contrôle a le focus?
OriginalL'auteur Chris Taylor
À l'aide de la corell.dll ressemble à une bonne idée.
Une autre façon est de créer de l'événement GotFocus des gestionnaires pour toutes les commandes de votre formulaire, Puis créer une classe de niveau variable de mises à jour avec le nom du contrôle qui a le focus actuel.
OriginalL'auteur dretzlaff17
Pas. d'abord vient le LostFocus-événement d'un contrôle puis vient le GotFocus-event du prochain contrôle. aussi longtemps que vous ne pouvez pas savoir qui contrôle que l'utilisateur utilise dans l'instant suivant, il n'est pas possible.
alors que si le compact framework de contrôle n'ont TabIndex-bien, il pourrait être prévu que si l'utilisateur utilise la touche tab.
Edit:
OK Vous avez posté la solution et il fonctionne très bien je dois l'avouer: le simple "Non" est faux
+1
Édité afin que je puisse changer mon vote.
Donc, je suis confus... Ce doc a dit que GotFocus va de l'avant LostFocus. msdn.microsoft.com/en-us/library/... Mais je vois LostFocus passer en premier (comme vous l'avez dit).
le document est bien sûr le droit, mais il ne possède pas les informations de contrôle qui est fait. donc lisez soigneusement ce que j'ai écrit: LostFocus d'un contrôle avant la réception focus de la de contrôle. la MSDN juste dit GotFocus vient avant LostFocus de la de contrôle. Vous parlez de "voir" donc je suppose que vous faites un petit exemple, où, par exemple, vous magasin de la survenance de la Perte et Gotfocus événements de différents contrôles dans une ListBox.
peut-être décrire vraiment ce que vous voulez faire avec elle, peut-être il ya une autre meilleure solution?
OriginalL'auteur OlimilOops
C'est un plus court code de la Vaccano réponse, à l'aide de Linq
Exactement le même (dans le haut-niveau d'abstraction).
OriginalL'auteur Marcelo Camargo