Vérifier vide zones de texte à l'aide de C# fonction
J'ai écrit une fonction pour vérifier si toutes les zones de texte dans un formulaire sont vides.
Il travaille actuellement si je l'ajouter à la zone de texte "quitter" de l'événement.
J'ai essayé de l'ajouter à un événement de clic de bouton, mais il donne une erreur (NullReferenceException unhandled
).
Ci-dessous le code:
public void inputBlank(object sender, EventArgs e)
{
TextBox userInput;
userInput = sender as TextBox;
userTextBox = userInput.Text;
string blankBoxName = userInput.Name;
string blankBox = blankBoxName.Remove(0,3);
if (userTextBox == "")
{
errWarning.SetError(userInput, "Please enter a value for " + blankBox);
userInput.Focus();
}
else
{
errWarning.SetError(userInput, "");
}
}
Me demandais si vous pouviez me conseiller comment résoudre le problème.
Merci beaucoup.
- Expéditeur mal, c'est un Bouton, pas une zone de texte.
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez valider un vide dans la zone de texte d'application Windows? Mieux l'utiliser lors de la Validation Validation de l'événement.
Ces liens peuvent vous aider
Le problème direct, comme je le vois, c'est que vous êtes la liaison de cet événement un bouton qui est en train de jeter de l'expéditeur pour une saisie de texte. Parce que l'expéditeur devient un bouton de contrôle et non une zone de texte, vous recevez l'exception nullreferenceexception.
Si vous cherchez quelque chose de sur-lié, vous avez plusieurs options:
Controls
propriété pour chaque élément de conteneur). Puis, une fois de plus, passer ces contrôles vous trouvez que vous souhaitez valider retour à la méthode de validation.par exemple
Et pour vous donner une idée de la récursivité de contrôle de la prise:
Comment quelque chose comme cela:
Vous itérer sur les commandes, vérifier si c'est une zone de texte, si l' .Le texte est vide définir la variable de classe de IsValid à false.
Puis un clic sur un bouton ou quelque chose est la .IsValid de la forme est faux, le feu d'une erreur.
De ce que je comprends, cela semblerait être parce que le
sender
instance est uneButton
et pas unTextBox
, qui est ce que vous essayez de dire qu'il est dans la ligne suivante:Cela ne fonctionnera pas car le bouton sur lequel vous avez cliqué est le contrôle qui a déclenché l'événement, c'est pourquoi que le contrôle sera l'expéditeur.
Depuis
TextBox
de contrôle a (ou au moins devrait avoir) un nom prédéfini /identificateur, pourquoi ne pas simplement l'accès est explicitement? Comme dans: