Tengo una aplicación WinForm con varios controles de entrada en un formulario. En el controlador de eventos de validación (Validating
o Validated
), necesito determinar qué control activar a continuación, en función del valor validado.Cómo establecer el foco en un control después de la validación en .NET
En la documentación del evento Validating de Microsoft, se indica:
Precaución
No intente ajustar el enfoque desde el interior de la Intro, GotFocus, licencia, LostFocus, validar o controladores de eventos validados. Hacerlo puede hacer que su aplicación o el sistema operativo dejen de responder. Para obtener más información, consulte el tema WM_KILLFOCUS en la sección "Referencia de entrada de teclado" y la sección "Interbloqueos de mensajes" del tema "Acerca de mensajes y colas de mensajes" en la biblioteca MSDN en http: // msdn.microsoft.com/library .
Hay un ActiveControl
propiedad para una clase de formulario que permite establecer el control que es llegar a ser activo, y se mencionan ninguna restricción. No he encontrado ninguna otra solución después de varias horas de búsquedas web.
Está configurando la propiedad ActiveControl
(en lugar de Focus
) de mi controlador de eventos Validated una forma segura de activar positivamente el control que quiero? Si no, ¿hay alguna solución?
Como .NET Compact Framework no tiene la propiedad ActiveControl
, ¿alguien puede sugerir una solución?
¡Guau, respuesta inteligente! Pensé que el método delegado tenía que llamar a EndInvoke(), pero eso fue antes de saber la diferencia entre Delegate.BeginInvoke() y Control.BeginInvoke(). Ver \t [.net - Cuál es la diferencia entre Invoke() y BeginInvoke] [1] [1] http://stackoverflow.com/questions/229554/whats-the-difference-between-invoke-and-begininvoke – Suncat2000