Test de numéricité décimale sur textbox

Résolu
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 - 20 déc. 2009 à 11:59
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 31 janv. 2011 à 12:19
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

cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
29 janv. 2011 à 08:40
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
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
29 janv. 2011 à 22:11
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 ,
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 déc. 2009 à 15:05
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
0
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
20 déc. 2009 à 15:53
Merci mais serait-il possible de me détaillé un peu plus le code stp parce je suis novice..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 déc. 2009 à 21:01
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
0
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
21 déc. 2009 à 12:04
je vais voir ca merci.
0
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
30 janv. 2011 à 08:19
Bonjour merci pour ta reponse qu'entend tu par clipboard ? Stp
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
30 janv. 2011 à 13:51
presse papiers
0
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
30 janv. 2011 à 15:25
D'accord, donc tu fais en sorte que la textbox reçoive tout de même ce que contient le presse papier ?
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
30 janv. 2011 à 18:31
ben oui
et je verifie si c'est un nombre si non je force
le textbox = ""
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 janv. 2011 à 08:39
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
0
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
31 janv. 2011 à 12:16
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 ^^
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 janv. 2011 à 12:19
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
0
Rejoignez-nous