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

Windows Forms Discussion :

[C#]saisir que un nombre decimal dans 1 textBox


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut [C#]saisir que un nombre decimal dans 1 textBox
    Bonjour,

    Voilà sur la FAQ j'ai vu comment saisir que des nombres, mais il faut que je saisisse un nombre décimal dans le textBox, que dois je faire pour juste autorisé le . comme caractère.

    Voici le code que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void txtSuperficie_KeyPress(object sender, KeyPressEventArgs e)
    {
               if(!char.IsDigit(e.KeyChar))
               {
                        e.Handled = true;
               }
    }
    y a t'il qqch à compléter sur ce code ?

  2. #2
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Pourquoi tu n'utilises pas System.Windows.Forms.NumericUpDown ?

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsnumericupdownclasstopic.asp

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    l'utilisateur, veut saisir, des poids en tonne. il est mieux d'avoir un textBox où l'utilisateur saisi directement.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Passe par les expressions régulières ou une MaskTextBox

    http://dotnet.developpez.com/sources...Forms#MaskedTB


    A+

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    l'utilisateur, veut saisir, des poids en tonne. il est mieux d'avoir un textBox où l'utilisateur saisi directement.
    Tu peux tout à fait saisir directement tes nombres comme dans une textBox.

    Tu auras en plus pleins d'outils de control en plus (nombre de chiffre après la virgule, séparation 10^3...)

    Prends la peine d'en poser un sur ta Forms, tu verras...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    il n'existe pas une fonction comme en VB IsNumeric ??

  7. #7
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Non mais tu peux très facilement la coder, pourtant je crois qu'il est preferable d'utiliser un MaskedTextBox afin d'eviter au user de saisir inutilement ce qui ne sera pas validé

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    bon j'essaye le masked textbox, je vous tiens au courant.

  9. #9
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par mcay
    Bonjour,

    Voilà sur la FAQ j'ai vu comment saisir que des nombres, mais il faut que je saisisse un nombre décimal dans le textBox, que dois je faire pour juste autorisé le . comme caractère.

    Voici le code que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void txtSuperficie_KeyPress(object sender, KeyPressEventArgs e) 
    { 
               if(!char.IsDigit(e.KeyChar)) 
               { 
                        e.Handled = true; 
               } 
    }
    y a t'il qqch à compléter sur ce code ?
    pourquoi t'essaie pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void txtSuperficie_KeyPress(object sender, KeyPressEventArgs e) 
    { 
               if(!char.IsDigit(e.KeyChar) && (e.keyChar != '.')) 
               { 
                        e.Handled = true; 
               } 
    }
    Citation Envoyé par bel.laurent
    Pourquoi tu n'utilises pas System.Windows.Forms.NumericUpDown ?
    [...]
    Tu peux tout à fait saisir directement tes nombres comme dans une textBox.
    +1 lumineuse

    Citation Envoyé par Morpheus
    Passe par les expressions régulières ou une MaskTextBox
    Morpheus, voyons, t'a pas honte ? une usine à gas pour quelques tonnes ....

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    alors j'ai fait ce que tu m'as dit de faire, mais maintenant il faut j'autorise quand mm le Backspace.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    c bon, donc voilà ce que j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void txtSuperficie_KeyPress(object sender, KeyPressEventArgs e)
    {
               if(!char.IsDigit(e.KeyChar) && (e.keyChar != '.') && (e.KeyChar != (char)8))
               {
                        e.Handled = true;
               }
    }
    et donc là je peux écrire mon nombre décimal, et faire un backspace si je me suis trompé.

    je vous remercie tous de m'avoir aider, surtout que j'ai essayé tout ce que vous m'avez dit. Merci encore.

  12. #12
    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 253
    Points
    28 253
    Par défaut
    et si tu tapes
    1.12.15
    derrière cela, sans maskedtextbox ou regex, on peut peut valider les données entrées.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    effectivement je n'y avais pas pensé, je peux essayer de faire une méthode qui permet de vérifier si il y a un seul point. Mais de toute façon quoiqu'il en soit apparemment je suis obligé de faire un maskedtextbox ??

  14. #14
    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 253
    Points
    28 253
    Par défaut
    ca depend si tu veux faire du post-traitement ou non.

    soit tu utilises une maskedtextbox ==> le composant verifie le format
    soit tu utilises les regex ==> tu les laisse taper ce que tu veux et tu verifies derriere que c'est au bon format

    un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    System.Text.RegularExpressions.Regex myRegex = new System.Text.RegularExpressions.Regex(@"^\d*[\.]?\d*$");
    // Si le montant est correct
    if (myRegex.IsMatch(txtMontant.Text) && !txtMontant.Text.Equals(""))
    {
                  // montant correct
    }

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    En fait je viens de voir, que dans visual studio 2005, il y a le composant MaskedTextBox, ils proposent déjà des formats prédéfinis, mais pas le decimal, donc je vais déjà essayer de prédéfinir ce format.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    bon voilà, j'ai pris la tête à tout le monde alors que la solution était devant moi et que je ne l'avais pas vu, même quand vous me l'avez dit.
    Donc comme je l'ai dit, j'utilise visual Studio 2005, le composant MaskedTextBox est dans la toolBox, ensuite on peut choisir le format, si le format n'est pas dans la liste, on peut nous mm le définir en sélectionnant Custom, je suis dsl de vous avoir pris la tête alors que la solution se trouvait en face.

    Je vous remercie de m'avoir aidé.

  17. #17
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    la prochaine fois penses à nous preciser d'emblée quelle framework tu utilises (ici 2.0) on aurait pu te donner la réponse immédiatement, çà aurait gagner du temps pour tous

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Ouais, j'y penserais

  19. #19
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par pharaonix
    et si tu tapes
    1.12.15
    derrière cela, sans maskedtextbox ou regex, on peut peut valider les données entrées.
    evenement Validating

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    private void textBox1_Validating(object sender, CancelEventArgs e)
    		{
    			try
    			{
    				Decimal.Parse(textBox1.Text);
    				errorProvider1.SetError(textBox1, "");
    			}
    			catch (ArgumentNullException)
    			{
    				errorProvider1.SetError(textBox1, "La case ne peut etre vide");
    				e.Cancel = true;
    			}
    			catch (OverflowException)
    			{
    				errorProvider1.SetError(textBox1, "Le nombre est trop grand");
    				e.Cancel = true;
    			}
    			catch (FormatException)
    			{
    				errorProvider1.SetError(textBox1, "Le format n'est pas correct");
    				e.Cancel = true;
    			}
    		}

  20. #20
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par doccpu
    Citation Envoyé par bel.laurent
    Pourquoi tu n'utilises pas System.Windows.Forms.NumericUpDown ?
    [...]
    Tu peux tout à fait saisir directement tes nombres comme dans une textBox.
    +1 lumineuse
    utilise un NumericUpDown et t'aura pas de problème de masque.

    parce que franchement MaskedTextBox est trop lourde pour ce que tu veux faire

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Créer autant d'enregistrements que la valeur saisie dans une textbox
    Par AfroDurf dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 16/06/2015, 19h13
  2. Saisir le texte en majescule dans des textbox
    Par Msysteme dans le forum Windows Forms
    Réponses: 8
    Dernier message: 20/04/2009, 14h26
  3. Saisir que des lettres dans une zone de texte
    Par parab dans le forum IHM
    Réponses: 2
    Dernier message: 03/12/2008, 14h52
  4. saisir un nombre maximal dans un JSpinner
    Par coquero dans le forum AWT/Swing
    Réponses: 25
    Dernier message: 27/05/2008, 19h45
  5. compl. nombre decimal dans une requete insert
    Par loic72 dans le forum Access
    Réponses: 2
    Dernier message: 31/05/2006, 11h43

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