2009-02-17 8 views
17

Ho un modulo creato dinamicamente. È un'applicazione winForms.Perché il mio evento di convalida non viene attivato in C#?

Questo modulo è solo un menu e una serie di caselle di testo ed etichette. Per il gusto di questo esempio, puoi ignorare le etichette.

Il mio problema è: quando si modificano le cose nelle caselle di testo, quindi fare clic sul menu per emettere "Salva", il testo dall'ultima casella di testo non ha ancora emesso il suo metodo "Convalida". Ciò sembra essere perché il controllo ha ancora lo stato attivo e che il menu si trova in un thread separato.

Come posso attivare gli eventi di convalida quando l'utente fa clic su "Salva"? Non so quale casella di testo è attiva l'utente (se presente) e l'emissione di SomeKnownControl.Focus(); all'interno della funzione "salva" non sembra essere di aiuto.

risposta

28

Ho avuto questo prima. Nel modulo:

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

ValidateChildren on MSDN

+0

Questo è tutto !!!! Grazie!! – Jerry

+0

Non è un problema ... Mi ha bloccato per un po '. – geofftnz

+1

Hmmm ... Penso che il problema con questo è che spara l'evento Validating su tutti i controlli figlio, non solo quello che ha lo stato attivo. –

Problemi correlati