Problème avec ErrorProvider.Clear()
J'ai un problème. Je valide les deux texboxs. Si texbox ne sont pas valider j'ai montrer le message d'erreur en erreur fournisseur.
Situation :
tbAzetId.Texte="chaîne de caractères";
tbHeslo.Texte=vide;
errorprovider afficher de message d'erreur dans tbHeslo, c'est ok.
Puis-je écrire du texte dans tbHeslo, cliquez sur le bouton, mais errorprovider est encore afficher de message d'erreur dans tbHeslo. Où peut être le problème?
Code est ici:
private bool IsAzetIdValid()
{
if (tbAzetId.Text!=String.Empty && Regex.IsMatch(tbAzetId.Text, "[^a-zA-Z0-9]"))
{
return true;
}
else
{
return false;
}
}
private bool IsHesloValid()
{
if (tbHeslo.Text !=String.Empty)
{
return true;
}
else
{
return false;
}
}
private void btnPrihlasenie_Click(object sender, EventArgs e)
{
errorProvider.Clear();
if (!IsAzetIdValid())
errorProvider.SetError(tbAzetId, @"Nezadali ste Azet ID");
else if (!IsHesloValid())
errorProvider.SetError(tbHeslo, @"Nezadali ste heslo");
else
Text = "OK";
}
OriginalL'auteur John | 2010-10-04
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin pour effacer l'erreur de fournisseur de texte pour ce contrôle spécifique lorsque l'erreur est effacée:
ErrorProvider.Claire n'est pas assez:
Il ne fonctionne pas. Si vous rencontrez des problèmes avec elle, vous aurez besoin pour être plus précis. Vous pouvez essayer juste l'erreur de compensation et de mise en d'un essai séparé fonction ou une application, pour essayer d'isoler le problème.
Pour ajouter à @MichaelPetrotta de réponse ici que SetError() avec une chaîne vide est la solution (fonctionne aussi pour moi), Clear() efface les paramètres de l'erreur du fournisseur et n'est pas la bonne approche, car plusieurs personnes suggèrent dans ce fil. Si vous avez configuré votre icône, par exemple, pour apparaître sur la MiddleLeft, appelant Clear() réinitialise le ErrorIconAlignment à MiddleRight. À peine souhaitable si seulement de vouloir supprimer le message d'erreur!
OriginalL'auteur Michael Petrotta
Utilisation errorProvider.SetError(ctlName, "") pour effacer le message d'erreur à partir d'un contrôle.
OriginalL'auteur Richard Hein
Il est de mon expérience que les deux
errorProvider.SetError(<ctrlName>, "");
et
errorProvider.Clear();
va supprimer l'icône de la forme. Être conscient de ce que
ErrorProvider
instance de compensation. L'exemple ci-dessous fonctionne. Toutefois, si vous déplacez leErrorProvider
déclaration à l'intérieur de la Validation de l'Événement, de compiler, de créer de l'erreur, mais ne sera pas clair.OriginalL'auteur Soma Holiday
Je n'ai jamais eu à utiliser errorProvider.Clear(), mais je suppose que cela dépend des réglages que vous avez modifiés (Clear() réinitialise le paramètres de la maîtrise effective de ne pas les erreurs). Je n'ai jamais voulu restaurer mes paramètres.
J'ai vu des idées telles que la boucle par tous de contrôle et de réglage, le message à vide..
Mais pour moi, ce qui en fait très travaillé, a été à juste
OriginalL'auteur da Bich
À l'aide de plusieurs ErrorProvider objets sera la cause de ce comportement. Ma solution a été d'utiliser un seul ErrorProvider.
OriginalL'auteur Paul
ErrorProvider.Clear
de réinitialiser tous les paramètres que vous avez avec leErrorProvider
telles que l'Alignement, le Rembourrage, la source de données etc. tandis que si vous voulez juste de désactiver le contrôle de l' (une fois qu'il est validé correctement) puis utiliser leSetError(Control, "")
. Pour votre code, ce serait:OriginalL'auteur Najam
errorProvider.SetError(<ctrlName>, "")
définit simplement le message d'erreur à une chaîne vide. Pour se débarrasser de l'erreur de l'indicateur entièrement, vous devez appelererrorProvider.Clear();
OriginalL'auteur B. Clay Shannon
Voici ma solution pour valider vide contrôles
1 - Ajouter une nouvelle classe à votre projet et à créer en suivant la méthode indiquée ci-dessous:
2 - et voici comment utiliser ma classe au-dessus de
Remarque: Nous avons besoin de définir un errorProvider. Grâce
OriginalL'auteur user2662006