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

VB.NET Discussion :

Champ integer devant être rempli par le user dans une textbox


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Par défaut Champ integer devant être rempli par le user dans une textbox
    Bonjour,

    Voici ma tentative de code pour faire en sorte que l'utilisateur soit obligé d'entrer un nombre entier dans le champ de la textbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Private Sub TextBox10_TextChanged(sender As Object, e As EventArgs) Handles TextBox10.TextChanged
            Dim nombre1 As Integer
            TextBox10.Text = nombre1
        End Sub
    Puis-je vous demander votre aide et me dire où est l'erreur ? Je constate qu'à la saisie, seul le zéro est accepté...

    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Si tu ne veux pas être contraint de faire plusieurs tests lors de l'ajout d'un bon ou d'un mauvais caractère dans la TextBox1 alors je te recommande vivement d'utiliser le gestionnaire d’événement suivant pour mener à bien ton expérience :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
            'Détermine si le caractère saisi au clavier est différent de la touche Backspace ou différent d'un chiffre !!
            ' Je cache volontairement le contenu du corps de cette méthode car c'est en recherchant de son propre chef qu'on comprends et qu'on assimile mieux !
     
            ' e.KeyChar = retourne le caractère saisi au clavier
            ' Char.isNumeric = est une fonction qui accepte en argument un type char et retourne un résultat booléen vrai si le caractère est numérique et false le cas échéant !
        End Sub
    A+

  3. #3
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Question bête ; pourquoi vouloir utiliser une TextBox pour saisir ce nombre alors qu'il existe des contrôles adaptés à la saisie de nombres (exemple: NumericUpDown) ?

  4. #4
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Bonjour,

    Ne pas oublier que rien n'empêche l'utilisateur de faire un copier coller d'un string non numérique dans le textbox
    aussi comme le conseille Sehnsucht utilise un numericupdown
    comme eviter les copier coller non numerique en utilisant un numericupdown
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub NumericUpDown1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles NumericUpDown1.MouseUp
            Dim rs As Integer
            If Not Integer.TryParse(DirectCast(sender, NumericUpDown).Text, rs) Then
                DirectCast(sender, NumericUpDown).Text = String.Empty
            End If
     
        End Sub

  5. #5
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    C'est pas vraiment nécessaire, au moment où le NumericUpDown perd le focus la validation s'effectue et remet les choses en place (la dernière valeur valide ; exemple on est sur un autre contrôle et le numericupdown a "42", on copie/colle "foo" au début ce qui donne "foo42" puis on édite le 2 à la main en le changeant en 3 ce qui donne "foo43" ; on change le focus et hop ça revient à 42 tout seul).
    Sinon dans le pire des cas on peut toujours mettre le numericupdown en ReadOnly et utiliser les boutons up/down (et/ou les flèches du clavier) pour assigner une valeur c'est un peu moins pratique mais efficace

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Je ne reviendrais pas sur la meilleure façon de procéder puisqu'elle a été détaillée
    Citation Envoyé par wallace27 Voir le message
    Puis-je vous demander votre aide et me dire où est l'erreur ? Je constate qu'à la saisie, seul le zéro est accepté...
    Pour expliquer votre problème.
    Il suffit de lire le cours sur les variables : généralités ; V-D-2. Déclaration, initialisation qui sont les bases de la programmation.
    La troisième ligne (celle après le code) vous indique pourquoi vous avez zéro (0) et aurez toujours zéro.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Dans l'événement KeyPress, il faut mettre ce code:
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If IsNumeric(e.keychar)=False And e.KeyChar <> Chr(8) Then
    e.Handled = True
    End If

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Par défaut
    Bonjour,
    Je crois que les réponses sont un peu à "coté" de la question...
    Vu que nous sommes sur un forum VB.NET et que la question concerne une TextBox (et non un numericup), wallace27 tu peux tester ce code :
    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
     
    Public Class Form1
        Dim Text1 As String = ""
     
        Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
            Text1 = TextBox1.Text
        End Sub
     
        Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            Try
                TextBox1.Text = Convert.ToInt32(TextBox1.Text)
            Catch ex As Exception
                TextBox1.Text = Text1
                TextBox1.SelectionStart = TextBox1.TextLength
            End Try
        End Sub
    End Class

  9. #9
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par romulus001 Voir le message
    Dans l'événement KeyPress, il faut mettre ce code:
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If IsNumeric(e.keychar)=False And e.KeyChar <> Chr(8) Then
    e.Handled = True
    End If
    loool Content de lire que tu connais comme "nous tous" la réponse..... le but étant de faire travailler sa matière grise.. Nous ne sommes pas là pour montrer qu'on sait faire mais pour guider celui qui pose des questions !!

    @ACIVE_CS : Nous ne répondons pas à côté de la plaque, Sehn n'a pas tort de rappeler qu'il existe un composant (NumericUpDown) afin de gérer au mieux cette situation !
    De plus, ton exemple dénote une mauvaise pratique car il existe des gestionnaires d’événements prévus pour gérer ce type de comportement sans pour autant déclencher une exception !


    Pour rester sur l'utilisation de la TextBox la solution se situe : Post 2 et 7 en complément

    Merci, la prochaine fois laissons-le réfléchir un peu c'est ainsi qu'on fait nos premières armes au travers l'expérience qu'elle soit bonne ou mauvaise on en tire toujours des conclusions !

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wallace1 Voir le message
    loool Content de lire que tu connais comme "nous tous" la réponse..... le but étant de faire travailler sa matière grise.. Nous ne sommes pas là pour montrer qu'on sait faire mais pour guider celui qui pose des questions !!
    ce que tu dis n'as aucun sens, comment l'auteur du message aurait-il pu trouver ? de même avec ? par ailleurs, comme ça commençait à partir en cacahuète, il fallait mettre un peu d'ordre dans tout ça.

    PS : qui sont les vilains qui me mettent des notes négatives, alors que j'apporte de l'aide?

  11. #11
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par romulus001 Voir le message
    ce que tu dis n'as aucun sens, comment l'auteur du message aurait-il pu trouver ? de même avec ? par ailleurs, comme ça commençait à partir en cacahuète, il fallait mettre un peu d'ordre dans tout ça.

    PS : qui sont les vilains qui me mettent des notes négatives, alors que j'apporte de l'aide?
    @romulus : Une bonne pratique en programmation consiste à connaitre l'outil avec lequel on travail et l'EDI en fait très largement partie ! Donc avec un minimum de sens de l'observation et de curiosité les lignes commentées dans mon snippet l'auraient très certainement interpellé, l'auto-complétion (ou Intellisense) l'aurait à coups sure aiguillé !

    Je ne me cache pas : moi je t'ai mis -1 car tu n'aides pas, tu étales ton savoir et nous savons tous que ca ne lui rendra pas service de lui livrer du code prêt à l'emploi (et sans en expliquer son contenu) !

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/08/2013, 18h35
  2. [DisplayTag] récupérer dans ma servlet la ligne cochée par le user dans le tableau
    Par luffy2mars dans le forum Taglibs
    Réponses: 0
    Dernier message: 08/12/2009, 11h18
  3. Réponses: 9
    Dernier message: 31/07/2006, 21h19
  4. récupérer table et user dans une fonction
    Par papy_tergnier dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 15/12/2005, 11h38
  5. Mettre une date par defaut dans une textBox.
    Par yaumme dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/12/2005, 22h39

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