Test de numéricité décimale sur textbox [Résolu]

Signaler
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Salut tout le monde !!
Je suis nouveau..;
Je suis entrain de creer une app en VB 2005 Express. Et je dois utiliser une textbox. Mais je voudrais un code qui puisse défendre l'utilisateur d'entré des lettres. J'en ai un qui fait appel à Keypress et KeyDown sauf qu'il n'autorise pas non plus le "."ou "," alors qu'il s'agit d'entré un nombre décimal !!
Quelqu'un pourrait m'aider ?

extrait de mon code :
Private Sub textbox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textbox1.KeyDown If (e.KeyCode >= Keys.NumPad0 And e.KeyCode <= Keys.NumPad9) Or e.KeyCode = Keys.Back Then Exit Sub Else testnum = True End If End Sub
Private Sub textbox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textbox1.KeyPress If testnum True Then e.Handled True testnum = False End If End Sub

13 réponses

Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
Une autre alternative, en reprenant le code et ajouter :
f (e.KeyCode >= Keys.NumPad0 And e.KeyCode <= Keys.NumPad9) Or e.KeyCode = Keys.Back 'or E.KeyCode=Keys.coma or E.KeyCode=Keys.Decimal

Pour personnalisé encore plus :
MSDN
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
salut
il faut penser aussi au clippoard
peut etre comme ça
 
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        If (e.KeyData >= Keys.D0 And e.KeyData <= Keys.D9) Or (e.KeyData >= Keys.NumPad0 And e.KeyData <= Keys.NumPad9) Or e.KeyData = Keys.Back Or e.KeyData = Keys.Delete Or e.KeyData = Keys.Decimal Then
            sender.readonly = False
        Else
            sender.readonly = True
        End If
    End Sub

    
    
    Private Sub TextBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseUp
        Try
            Double.Parse(sender.text)
        Catch ex As Exception
             sender.text = ""
        End Try


le problème je n'ai pas le Keys.Decimal
certains pays on le . ou ,
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
laisse saisir tout ce que l'utilisateur veux.

lors de la perte de focus du textbox, là, vérifie ce qui a été saisi

Single.TryParse me semble

ainsi, pas de gène a la saisie, et c'est efficace malgré tout


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
Merci mais serait-il possible de me détaillé un peu plus le code stp parce je suis novice..
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
prend alors tout de suite le reflex de lire la doc...

http://msdn.microsoft.com/fr-fr/library/system.single.tryparse.aspx

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
je vais voir ca merci.
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
Bonjour merci pour ta reponse qu'entend tu par clipboard ? Stp
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
presse papiers
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
D'accord, donc tu fais en sorte que la textbox reçoive tout de même ce que contient le presse papier ?
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
ben oui
et je verifie si c'est un nombre si non je force
le textbox = ""
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Pas fan du controle a la saisie...

Trop intrusif...
plus simple de controler la saisie une fois le focus rendu

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
c'est vrai Renfield, cependant, étant étudiant, on ne cesse de nous harcelé en nous rabâchant que pour une question d'ergonomie et de "sécurité", il était mieux d'empêcher l'utilisateur d'entré n'importe quoi plutôt que de tenté de réparer son erreur (c'est-à-dire après la saisie).
Mais bien sûr les opinions divergent à ce sujet ^^
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
clipboard, glisser-deposer, etc...
y'a tant de manières d'entrer du texte...

si on va par la, gérer le WM_SETTEXT tant qu'on y est

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp