demasiado largo para un comentario, incluye enlace, y el código ... pero esto es un comentario ...
Muchas personas se han quejado de un control de usuario que no se dispare el evento GotFocus(). Por ejemplo: UserControl and GotFocus() fyi: LostFocus() se activará como se esperaba, en mi experiencia. En el pasado, en un proyecto de Formularios múltiples, he experimentado con la implementación de 'Ingresar' y 'Dejar manejadores de eventos en un UserControl en cada Formulario, y descubrí que' Intro solo se invoca en Carga de formulario, una vez.
Evidentemente, los controles en el UserControl "tomar foco" (de una manera que no puedo explicar, pero tal vez uno de los gurús de WinForms de SO lo hará). ¿Quizás esto se relaciona con el hecho de que UserControl desciende de ContainerControl?
que experimentaron con la escritura una 'GotFocus() manejador:
private void Control_GotFocus(object sender, EventArgs e)
{
Console.WriteLine("Control GotFocus : " + ((sender as Control).Name));
}
Y luego, en el control de usuario' evento de carga, cable de seguridad de todos los controles en el control de usuario a ese controlador de eventos: lo que observé fue que el Control en el UserControl con el TabIndex más bajo activará el evento 'GotFocus' tan solo al iniciar la aplicación y al cambiar de Formularios.
La única otra cosa que he mencionado en esta situación es asegurarse de que la propiedad 'IsTabStop del UserControl está configurada en' Verdadero: esto era de Shawn Wildermuth en MS en el contexto de una pregunta relacionada con SilverLight, entonces no tengo idea de si esto podría aplicarse en tu caso.
Otra sugerencia, que era escribir un controlador de eventos MouseDown o MouseClick para el UserControl, y en esa llamada: this.SetFocus();
no me llevó a ninguna parte.
Espero que tengas una respuesta!
Esto pareció hacer el trabajo. Continuaré jugando con él para resolver las complejidades que mencionaste. ¡Gracias! – Sambo
+1 Me alegra tener otra gran respuesta de NoBugz. Curioso: en este caso, ¿cree que el OP podría ser mejor utilizando un Formulario en lugar de un UserControl? – BillW
@Bill: la clase Form también es un control de contenedor, aunque no se defenderá de la misma manera. Mi consejo debería ser evitar las prácticas de IU no estándar. Confunde al usuario también. –