2009-02-17 12 views
17

Tengo un formulario que se crea dinámicamente. Es una aplicación winForms.¿Por qué mi evento de validación no se activa en C#?

Este formulario es solo un menú y una serie de cuadros de texto y etiquetas. Por el bien de este ejemplo, puede ignorar las etiquetas.

Mi problema es: Cuando edito cosas en los cuadros de texto, a continuación, hago clic en el menú para emitir "Guardar", el texto del último cuadro de texto todavía no ha emitido su método de "Validación". Esto parece deberse a que el control todavía tiene foco, y que el menú está en un hilo separado.

¿Cómo puedo forzar que se activen los eventos de validación cuando el usuario hace clic en "guardar"? No sé en qué cuadro de texto está el usuario (si lo hay), y emitir SomeKnownControl.Focus(); dentro de la función "guardar" no parece ayudar.

Respuesta

28

Lo he tenido antes. En su formulario:

private void SaveButtonClick(...) 
{ 
    if (this.ValidateChildren()) 
    { 
     // do save 
    } 
} 

ValidateChildren on MSDN

+0

Eso fue todo !!!! ¡¡Gracias!! – Jerry

+0

No hay problema ... También me dejó perplejo por un tiempo. – geofftnz

+1

Hmmm ... Creo que el problema con esto es que dispara el evento Validating en todos los controles secundarios, no solo en el que tiene foco. –

Cuestiones relacionadas