2009-11-18 13 views
7

Tengo winforms con algunos controles y un ErrorProvider. Los eventos de validación del control se usan para validar los datos y reportar el error al ErrorProvider si los hay. Esto funciona muy bien cuando el usuario ingresa información incorrecta en el control y deja el control.¿Cómo forzar un control para que se valide a sí mismo?

Sin embargo, la validación no ocurre si el usuario hace clic en sin ingresar ningún dato. ¿Hay alguna manera de forzar la validación de todos los controles cuando el usuario hace clic en Aceptar? Y en el caso de que falle alguna validación, ¿cómo podría saber y cancelar el evento OK?

Respuesta

14

Puede usar Form.ValidateChildren para forzar la validación de todos los controles en el formulario, siempre que admitan la validación. Tenga en cuenta que cualquier control con CausesValidation establecido en False no generará un evento Validating y, por lo tanto, no será validado por ValidateChildren.

+11

¿Qué hay de validar un solo ComboBox? Form.ValidateChildren plantea un problema de eficiencia cuando se utiliza en formularios con una gran cantidad de controles que provocan la validación. – Rob

3

También puede usar Validate o ValidateChildren de cualquier antecesor ContainerControl, donde Validate debe tener un mejor rendimiento.

Tenga en cuenta que Form es un ContainerControl.

Cuestiones relacionadas