5 votes

Validation de la zone de texte en c#

J'ai un formulaire avec une zone de texte qui ne devrait accepter que des valeurs d'année de 4 chiffres entre 1980 et 2011. Je suis sûr qu'il doit y avoir un contrôle de validation c# simple à mettre en œuvre pour effectuer cette vérification, mais je n'arrive pas à le trouver.

Des suggestions?

4voto

Adrian Faciu Points 6042

Attrapez l'événement de validation et ajoutez votre code de validation à l'intérieur.

Pour un exemple complet, consultez la page MSDN .

Pour une validation simple, vous pouvez également utiliser un MaskedTextBox.

2voto

Manatherin Points 2685

Tout d'abord, je dirais, utilisez la propriété de longueur maximale définie à 4 pour que aucun caractère supplémentaire ne puisse être saisi

Ensuite, vous devriez connecter vos propres contrôles pour le valider (peut être une validation sur le changement de texte, sur la perte de focus, etc) qui vérifierait que seuls des chiffres sont saisis et qu'ils sont entre les valeurs spécifiées

1voto

RvdK Points 10793

Un MaskedTextBox fera l'affaire. Définissez le masque selon vos besoins : msdn. Mais je doute qu'il vérifie si la valeur se trouve dans une plage. Il vérifie probablement seulement si la valeur est un entier.

0voto

Pabuc Points 2362

D'accord, je ne vais pas écrire tout le code ici mais voici ce que je ferais:

Dans l'événement textchanged de votre zone de texte;

  • Vérifiez si la valeur saisie est numérique
  • Vérifiez si elle correspond au modèle (comparez les caractères avec ce que vous voulez)

Pour celui-ci, vous devez comparer chaque chiffre un par un. Je vous suggère d'écrire une méthode qui analyse le texte et les compare avec vos valeurs attendues. Quelque chose comme ceci:

private bool IsNumberValid(string text)
{
    String min = "1980",max=2011;
    try
    {
        int minNumber = Convert.ToInt32(min.Substring(0,text.length));
        int maxNumber = Convert.ToInt32(max.Substring(0,text.length));
        int myNumber = Convert.ToInt32(text);
        if(myNumber <= max && myNumber >= min)
            return true;
     }
    catch(Exception ex)
    {
        return false; // le nombre n'est pas numérique
    }
    return false;
 }

Il peut y avoir de petites erreurs, je ne l'ai pas écrit dans VS. Vous devriez vérifier la longueur du texte et ne pas appeler cette méthode si elle est égale à 0.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X