Présentation de la fonction.Parcourir les contrôles pour trouver errorProviders C# WinForm
J'ai cette fonction SaveDetails
dans un WinForm
, qui le compare à tous les controls
, pour déterminer si des errorProviders
ont été signalés dans le form
lors de la saisie des utilisateurs. Si la fonction returns true
, toutes mes valeurs TextBoxes
doivent être stockées dans mes champs privés, et afficher une boîte de messagerie et fermer le formulaire.
// Pour environ 15 textBoxes, est-ce que cela peut être réalisé aussi en faisant une boucle? Comme cela semble très lourd.
title = cmb_Title.Text;
Si returns false
et un errorProvider
a été trouvé dans l'itération, il a besoin d'afficher un message d'erreur pour l'utilisateur, les champs privés clairs et donner la chance utilisateur de rentrer dans les détails, mais TextBoxes pas clair !!
Problème:
la boucle à travers tout, itère tous les contrôles, peu importe si elle a trouvé un errorProvider
. Comment puis-je empêcher cela de signaler juste quand un seul a été trouvé? Cette fonction est également dans un clickEvent
.
code
isValid = true;
foreach (Control c in panel1.Controls)
{
if (errorProvider1.GetError(c).Length > 0)
{
isValid = false;
MessageBox.Show("invalid entry, please revisit the form before proceding");
}
}
if (isValid)
{
title = cmb_Title.Text;
surName = txt_SurName.Text;
dateOfBirth = dateTimePicker1.Text.ToString();
MessageBox.Show("Indi Form Saved");
Hide();
Cela n'a jamais aucun sens d'utiliser plus d'un ErrorProvider pour un formulaire. Il suffit de fournir des icônes et des info-bulles pour tous les contrôles. Vous n'aurez jamais de difficulté à trouver ce fournisseur bien sûr. Si vous voulez utiliser ErrorProvider pour * également * valider le formulaire entier, alors [considérez ceci] (https://stackoverflow.com/a/2682478/17034). –