Quelle est la différence entre le Contrôle.Entrer et de Contrôle.GotFocus events?

C'est peut-être une question de base, mais je dois admettre que je n'ai jamais vraiment compris quelle était la différence entre le contrôle.Entrer et de Contrôle.GotFocus events l'est.

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.enter.aspx http://msdn.microsoft.com/en-us/library/system.windows.forms.control.gotfocus.aspx

est-ce une différenciation entre la capture d'un clavier ou d'une souris ou autre chose?

25
demandé sur Adriaan Stander 2010-04-24 01:22:05

2 réponses

les événements GotFocus/LostFocus sont générés par des messages Windows, WM_SETFOCUS et WM_KILLFOCUS respectivement. Ils sont un peu gênants, surtout WM_KILLFOCUS qui est enclin à l'impasse. La logique à L'intérieur des formes Windows qui gère la logique de validation (validation d'événement par exemple) peut outrepasser les changements de focus. En d'autres termes, le focus a changé, mais le code de validation l'a déplacé. L'état logique de votre UI est qu'il n'a jamais bougé et vous ne devriez pas être conscient qu'il faire.

les événements Enter/Leave évitent le genre de problème que ces événements de notification de changement de focus de bas niveau peuvent causer, ils sont générés lorsque Winforms a établi le vrai focus. Vous souhaitez presque toujours à les utiliser.

20
répondu Hans Passant 2013-04-18 13:21:57

de Contrôle.L'événement Enter se produit quand un contrôle obtient la mise au point pour la première fois. Tout En Contrôle.GotFocus se produit à chaque fois qu'un contrôle se concentre. Par exemple, vous avez 'textBox1' qui a déjà focus et vous appelez textBox1.Focus (), L'événement GotFocus se déclenchera toujours dans cette instance, contrairement à L'événement Enter qui ne se déclenchera que si un contrôle n'a pas déjà le focus et le reçoit pour la première fois.

3
répondu Eric John Ignacio 2015-04-08 03:01:57