IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

verifier qu'une valeur est un nombre


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Points : 38
    Points
    38
    Par défaut verifier qu'une valeur est un nombre
    je recupere dans une textbox un code postal qui est sous forme string. comment verifier que l'utilisateur qui a saisi une valeur dans cette textbox a bien saisi un nombre?

    merci.

    Alex

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    les textbox peuvent etre configurées pour recevoir un nombre seuleument.
    une propriété certainement...

    C'est bcp mieux que de controller la saisie par la suite...
    Pour les details, cherche tout seul !

  3. #3
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Tu peux aussi tester les touches appuyées par l'utilisateur dans ce TextBox pour n'activer que les nombres...
    Comme ça, l'utilisateur ne pourra pas entrer autre chose que des nombres dans ton TextBox.
    Contrec

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Tu peux aussi tester les touches appuyées par l'utilisateur dans ce TextBox pour n'activer que les nombres...
    Comme ça, l'utilisateur ne pourra pas entrer autre chose que des nombres dans ton TextBox.
    Comment faire cela?

    les textbox peuvent etre configurées pour recevoir un nombre seuleument.
    une propriété certainement...
    Laquelle?

  5. #5
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    1) Tu commences par créer une méthode qui teste si le code de la touche clavier est un nombre et qui renvoie True si c'est le cas, sinon False (Elle pourra être utilisée pour tous les textbox que tu veux.

    2) Tu actives l'événement TextChanged de ton TextBox (comme ça l'événement se lance dès que l'utilisateur appuie sur un boutton dans le TextBox.

    3) Dans les paramètres de l'événement TextChanged, tu peux récupérer le code de la touche qui a été préssée. Tu lances alors ta méthode pour savoir si cette touche correspond à un nombre.

    - Si c'est un nombre, tu ne fais rien et le nombre s'affiche.
    - Si c'est une autre chose, tu met this.cancel = true dans ton événement, ce qui aura pour effet d'annuler la dernière pression de touche dans ton TextBox. L'utilisateur ne verra meme pas le caractère se rajouter disparaitre.


    J'ai utilisé cette méthode il y a quelques mois et je sais qu'elle fonctionne puisque je l'avais implémentée sur tous mes TextBox (tu peux aussi tester pour avoir que des lettre, ect...) mais je n'ai plus le code sous les yeux...
    Si tu es encore bloqué ce soir, je pourrai un peu plus t'aider.
    Contrec

  6. #6
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    Citation Envoyé par alexlevenere Voir le message
    Laquelle?
    En fait en C++, elle existait cette prop, maispas en C#.

    je te conseille d'utiliser un controle NumericUpDown à la place.
    Pour les details, cherche tout seul !

  7. #7
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Citation Envoyé par Contrec Voir le message
    1) Tu commences par créer une méthode qui teste si le code de la touche clavier est un nombre et qui renvoie True si c'est le cas, sinon False (Elle pourra être utilisée pour tous les textbox que tu veux.

    2) Tu actives l'événement TextChanged de ton TextBox (comme ça l'événement se lance dès que l'utilisateur appuie sur un boutton dans le TextBox.

    3) Dans les paramètres de l'événement TextChanged, tu peux récupérer le code de la touche qui a été préssée. Tu lances alors ta méthode pour savoir si cette touche correspond à un nombre.

    - Si c'est un nombre, tu ne fais rien et le nombre s'affiche.
    - Si c'est une autre chose, tu met this.cancel = true dans ton événement, ce qui aura pour effet d'annuler la dernière pression de touche dans ton TextBox. L'utilisateur ne verra meme pas le caractère se rajouter disparaitre.


    J'ai utilisé cette méthode il y a quelques mois et je sais qu'elle fonctionne puisque je l'avais implémentée sur tous mes TextBox (tu peux aussi tester pour avoir que des lettre, ect...) mais je n'ai plus le code sous les yeux...
    Si tu es encore bloqué ce soir, je pourrai un peu plus t'aider.

    C'est ce qu'on appel réinventé la roue

    Utilise un maskedEdit. C'est justement faire pour cela.
    Remoting Context Matters
    Everything in this chapter is 100 percent undocumented. Reliance on these techniques is not supported by either Microsoft, the publisher, or the author of this book. Use at you own risk! If your computer won't work afterwards, your toaster blows up or your car doesn't start, I assume no liability whatsoever: You're now about to enter the uncharted territories of .NET and you do so on your own risk. I can only provide some guidance

  8. #8
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Points : 90
    Points
    90
    Par défaut
    salut

    comme déjà mentionner , tu peux dès la saisie contrôles si le user a saisie ou non un chiffre si non tu peux opter pour la solution suivante :

    1- parcours de la chine de caractère
    2- récupération des éléments ( entité Char )
    3- tu fait la conversion de chaque élement en entier
    4- teste si le chiffre obtenu est compri entre le code ASCII de 0 et 9 (48<indice<57)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int i=0;i<chaine.Length;i++)
    {
    int indice =Convert.ToInt32(chaine[i])-Convert.ToInt32('0');
    /* ici tu teste si indice est compris entre le code ascii de 0 et de 9 */
    }
    5- si tu trouve mieux avise nous SVP

  9. #9
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		// 
    			// maskedTextBox1
    			// 
    			this.maskedTextBox1.Location = new System.Drawing.Point(282, 135);
    			this.maskedTextBox1.Mask = "000000";
    			this.maskedTextBox1.Name = "maskedTextBox1";
    			this.maskedTextBox1.Size = new System.Drawing.Size(100, 20);
    			this.maskedTextBox1.TabIndex = 22;
    Remoting Context Matters
    Everything in this chapter is 100 percent undocumented. Reliance on these techniques is not supported by either Microsoft, the publisher, or the author of this book. Use at you own risk! If your computer won't work afterwards, your toaster blows up or your car doesn't start, I assume no liability whatsoever: You're now about to enter the uncharted territories of .NET and you do so on your own risk. I can only provide some guidance

  10. #10
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    si tu trouve mieux avise nous SVP
    on vient de le dire au dessus. la solution c'est l'utilisation du control MaskedEdit.

    et sinon on aurait pu utiliser un Validator utilisant une regex
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  11. #11
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Points : 90
    Points
    90
    Par défaut
    c'est pour cetet raison là que j'ai lui dis ça.
    parce que apprement la solution est simple mais on essaye de ré-inventer la roue ,mais c'est quand même de créer de temps à autre nos propre astuces

    Citation Envoyé par Louis-Guillaume Morand Voir le message
    on vient de le dire au dessus. la solution c'est l'utilisation du control MaskedEdit.

    et sinon on aurait pu utiliser un Validator utilisant une regex

  12. #12
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    La solution du masque est la meilleure de ce que j'ai lu. Mais ceci est une validation "client". Tu peux également valider que ta donnée est un nombre d'une façon "business" en utilisant, par exemple, Int32.TryParse().

Discussions similaires

  1. Verifier qu'une valeur est comprise dans un intervalle
    Par wizo_nac dans le forum Prolog
    Réponses: 7
    Dernier message: 23/06/2009, 18h36
  2. Verifier si une variable est un nombre
    Par TheBlue dans le forum Dev-C++
    Réponses: 2
    Dernier message: 10/01/2008, 17h39
  3. Réponses: 3
    Dernier message: 12/10/2006, 16h39
  4. Vérifier qu'une variable est un nombre
    Par GLDavid dans le forum Linux
    Réponses: 9
    Dernier message: 13/02/2006, 16h06
  5. Réponses: 2
    Dernier message: 17/08/2005, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo