C # WinForms ErrorProvider Contrôle
Personne ne sait si il existe un moyen d'obtenir une liste de commandes qui ont le ErrorProvider icône est active. c'est à dire. tous les contrôles que l'échec de la validation. J'essaie d'éviter le bouclage tous les contrôles dans le formulaire.
J'aimerais afficher une sorte de message indiquant combien d'erreurs il y a sur le formulaire. Comme mon formulaire contient les onglets je suis en train de le rendre évident pour l'utilisateur que des erreurs peuvent exister sur les onglets inactifs et ils ont besoin de vérifier tous les onglets.
Grâce
Barry
source d'informationauteur codingbadger
Vous devez vous connecter pour publier un commentaire.
Cela tombe dans la catégorie de "comment pouvez-vous pas savoir". Il est de votre code qui appelle ErrorProvider.SetError(), vous ne devriez avoir aucun mal à garder une trace de combien d'erreurs sont toujours actifs. Voici une petite aide de la classe, de l'utilisation de ses SetError() la méthode de mise à jour de la ErrorProvider. Sa propriété Count renvoie le nombre d'erreurs actives:
Aujourd'hui, j'ai eu le même problème. Ma solution est d'étendre le contrôle ErrorProvider.
Voir le code ci-dessous:
Vous pouvez utiliser le haut de la classe dérivée dans votre formulaire, puis (dire que myErrorProvider est l'instance de classe dans votre formulaire), vous pouvez obtenir toutes les commandes avec des erreurs dans votre formulaire, en appelant:
C'est un modérément difficile la solution qui vous parle.
Il n'existe aucun moyen pour atteindre ce automatiquement, pour autant que je sais.
Vous devez maintenir un drapeau pour chaque contrôle et définir manuellement à chaque fois une erreur de fournisseur est cligna des yeux.
Peut être un
Dictionary<TKey, TValue>
peut être utilisé pour garder la trace.Vous devez utiliser SetError pour définir l'erreur sur la commande, en premier lieu, non? Peut-être vous devriez stocker de l'information dans une autre collection en même temps, si vous voulez l'avoir à portée de main. Par exemple, vous pouvez ajouter chaque contrôle avec une erreur d'un hashset.
Il suffit de faire le errorprovider comme une variable Globale plutôt que locale variable
de
Cela devrait résoudre votre problème, parce que probablement, vous pourriez avoir été la suppression de vos erreurs à partir d'une autre méthode telle que btnCancel_click.
Cela a fonctionné pour moi 🙂