2009-11-18 6 views
7

J'ai une winforms avec quelques contrôles et un ErrorProvider. Les événements de validation du contrôle sont utilisés pour valider les données et signaler l'erreur à ErrorProvider s'il y en a. Cela fonctionne très bien lorsque l'utilisateur entre des informations erronées dans le contrôle et quitte le contrôle.Comment forcer un contrôle à se valider?

Cependant, la validation ne se produit pas si l'utilisateur clique sur sans entrer de données. Est-il possible de forcer la validation de tous les contrôles lorsque l'utilisateur clique sur OK? Et dans le cas où une validation a échoué, comment pourrais-je connaître et annuler l'événement OK?

Répondre

14

Vous pouvez utiliser Form.ValidateChildren pour forcer la validation de tous les contrôles du formulaire, tant qu'ils prennent en charge la validation. Notez que tout contrôle avec CausesValidation défini sur False ne déclenchera pas un événement Validating et ne sera donc pas validé par ValidateChildren.

+11

Qu'en est-il de valider un seul ComboBox? Form.ValidateChildren pose un problème d'efficacité lorsqu'il est utilisé sur des formulaires avec un grand nombre de contrôles qui provoquent la validation. – Rob

3

Vous pouvez également utiliser Validate ou ValidateChildren d'un ancêtre ContainerControl, où Validate devrait fonctionner le mieux.

Notez que Form est un ContainerControl.

Questions connexes