Validation de plusieurs zones de texte sur un formulaire C # Windows en même temps
J'ai un formulaire avec plusieurs zones de texte et d'autres contrôles. Je suis en utilisant le contrôle errorprovider et j'ai câblé la validation de l'événement sur chaque zone de texte que j'ai besoin de valider. La Validation de l'événement se produit lorsqu'un contrôle des rendements un autre contrôle. Si l'événement se produit lorsque vous utilisez la touche tab pour vous déplacer à l'abri du courant de contrôle ou lorsque vous cliquez sur un autre contrôle avec la sourisUn. Et je trouve cela extrêmement gênant, juste pour donner un exemple, si j'ai ouvert ce winform, puis immédiatement essayer de le fermer, il ne va pas me laisser, parce que la validation de déclencher à se plaindre de la première zone de texte n'avons pas le texte saisi.
Le comportement que je veux c'est à l'aide de la errorprovider, comment puis-je valider l'ensemble de la forme que lorsque je clique sur le bouton Enregistrer de la forme?
Grâce
source d'informationauteur Edwin | 2009-12-24
Vous devez vous connecter pour publier un commentaire.
Vérifier la propriété Forme.AutoValidate.
Valeurs possibles:
Le paramètre
EnableAllowFocusChange
permettra de résoudre le problème de l'ouverture du formulaire et immédiatement essayer de la fermer car le focus sera transféré sur le bouton Annuler.Si vous voulez un contrôle complet sur la validation, vous pouvez le configurer pour
Disable
et effectuer manuel de validation à l'aide deForm.Validate
etForm.ValidateChildren
. Je ne suis pas sûr à 100% mais je crois queForm.ValidateChildren
ne pas déclencher des événements de validation de contrôles placés à l'intérieur d'unTabControl
.Définir la propriété CausesValidation sur toutes les commandes (à l'exception du bouton Enregistrer) à False. Cela permettra de supprimer la Validation de l'événement pour toutes les commandes, à l'exception du bouton. Il pourrait ne pas être exactement la behvior vous voulez, comme l'ennuyeux comportement se produit lorsque vous modifiez le focus sur le bouton, mais il est proche de ce que tu veux je pense.
Une autre option, si cela ne fonctionne pas, est d'une boucle sur le contrôle lorsque le bouton est cliqué et les valider manuellement un à un...
Voici le lien MSDN: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.causesvalidation.aspx
Juste pour garder cette mise à jour, comme João Angelo, a déclaré le Formulaire.ValidateChildren() ne se déclenche pas à la validation des contrôles à l'intérieur, disons, d'une Zone ou TabControl.
Toutefois, vous pouvez passer ValidationContraints à la surcharge ValidateChildren(ValidationConstraints) méthode et mis à Néant qui:
"Valide tous les contrôles enfants et tous les enfants de ces contrôles enfants, indépendamment de leurs paramètres de propriété."
Il n'y a pas un moyen d'obtenir WinForms pour valider les contrôles sur enregistrer. À la différence d'un formulaire web, il n'y a pas de "soumettre" ou "enregistrer" de l'événement (au moins sur la forme). Vous pouvez programmer le formulaire à se comporter de cette façon, mais vous ne serez pas en mesure d'utiliser la liaison de données (Enregistrer permettrait de définir le modèle et vérifier les erreurs).
Peut-être une meilleure façon est de ne pas utiliser une boîte de dialogue pour afficher des erreurs (je suis en supposant que vous êtes puisque vous disent que c'est un problème avec la fermeture de la fenêtre). Les info-bulles peuvent fournir une meilleure expérience utilisateur. Si l'utilisateur ignore les info-bulles, vous pouvez fournir une boîte de dialogue quand ils ont frappé Enregistrer. Ils seront en mesure de fermer le formulaire, même si il ya de mauvaises données.