2009-11-18 7 views
7

Ho una winform con alcuni controlli e un ErrorProvider. Gli eventi di convalida del controllo vengono utilizzati per convalidare i dati e segnalare l'errore a ErrorProvider se ce n'è uno. Questo funziona perfettamente quando l'utente inserisce informazioni errate nel controllo e lascia il controllo.Come forzare un controllo a convalidare se stesso?

Tuttavia, la convalida non si verifica se l'utente fa clic su on senza inserire alcun dato. C'è un modo per forzare la validazione di tutti i controlli quando l'utente fa clic su OK? E nel caso in cui qualche convalida fallita, come faccio a sapere e cancellare l'evento OK?

risposta

14

È possibile utilizzare Form.ValidateChildren per forzare la convalida di tutti i controlli nel modulo, a condizione che supportino la convalida. Si noti che qualsiasi controllo con CausesValidation impostato su False non genera un evento di convalida e pertanto non verrà convalidato da ValidateChildren.

+11

Che ne dici di convalidare un singolo ComboBox? Form.ValidateChildren pone un problema di efficienza quando viene utilizzato su moduli con un numero elevato di controlli che causano la convalida. – Rob

3

È inoltre possibile utilizzare Validate o ValidateChildren di qualsiasi antenato ContainerControl, dove Validate dovrebbe funzionare al meglio.

Si noti che Form è un ContainerControl.

Problemi correlati