shown form eventos event activated windows winforms user-interface events

windows - form - ¿Cuál es la diferencia entre los eventos Control.Enter y Control.GotFocus?



windows form load event (2)

El evento Control.Enter ocurre cuando un control obtiene foco por primera vez. Mientras Control.GotFocus sucede CADA vez, un control obtiene el foco. Por ejemplo, tiene ''textBox1'' que ya tiene el foco y llama a textBox1.Focus (), el evento GotFocus siempre se activará en esta instancia, a diferencia del evento Enter que solo se activará si un control no tiene el foco y lo recibe por primera vez.

Esta puede ser una pregunta básica, pero debo admitir que nunca entendí realmente cuál es la diferencia entre los eventos Control.Enter y Control.GotFocus.

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

¿Es una diferenciación entre capturar la entrada del teclado o el mouse o alguna otra cosa?


Los eventos de GotFocus / LostFocus son generados por mensajes de Windows, WM_SETFOCUS y WM_KILLFOCUS respectivamente. Son un poco problemáticos, especialmente WM_KILLFOCUS, que es propenso a un punto muerto. La lógica dentro de Windows Forms que maneja la lógica de validación (Validación de eventos, por ejemplo) puede anular los cambios de enfoque. En otras palabras, el foco realmente cambió pero luego el código de validación lo movió hacia atrás. El estado lógico de su IU es que nunca se movió y usted no debe saber que sí lo hizo.

Los eventos Entrar / Salir evitan el tipo de problemas que pueden causar estos eventos de notificación de cambio de enfoque de bajo nivel, que se generan cuando Winforms ha establecido el foco verdadero. Casi siempre quieres usar estos.