Comment utiliser le Keypress [Résolu]

Messages postés
8
Date d'inscription
vendredi 3 décembre 2010
Dernière intervention
1 février 2013
- - Dernière réponse : cs_ShayW
Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
- 3 déc. 2010 à 13:51
Bonjour,

Je suis débutante en VB et je suis en train d'utiliser un Vb 2010 Express

J'ai un problème en travaillant sur mon projet à l'école. J'essaie de faire une boîte et on tape un nombre binaire de 4 chiffre dans le textbox. Si l'utilisateur entre un chiffre hors 0 ou 1 ou plus de 4 chiffres, un MesgBox va ouvrir, puis on efface tout de suite la fausse valeur entrée. Donc j'ai écris un code comme suit:


Private Sub txtdonnee1_keypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txtdonnee1.KeyPress

If Len(Txtdonnee1.Text) > 4 And Not (e.KeyChar Chr(48) Or e.KeyChar Chr(49)) Then
e.Handled = False
MsgBox("Entrée Invalide!!!")
Txtdonnee1.Text += Chr(8)
End If

If Asc(e.KeyChar) = &HD Then
Call btn1_cliked()
End If

End Sub

Malheureusement ca marche pas, j'ai créé un nouveau projet pour tester ms il semble que vb ne lit pas cette partie de code.

Pouvez-vous m'indiquer ce que j'ai fait comme faute ou me suggérer d'autres solutions pour enfin avoir le résultat comme je veux.

Je vous mercie beaucoup.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
3
Merci
Salut

Tu peux aussi permettre seulement les 0 et les 1
et bloquer les autres touches sauf le backspace
ou delete
sans msgbox
 Private Sub Binary_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles binary.KeyDown
        'verifie que la valeur de la touche frappée est 0 ou 1 ou backspace ou delete 
        If e.KeyValue AscW("0") Or e.KeyValue AscW("1") Or e.KeyValue = 8 Or e.KeyValue = 46 Then
            sender.readonly = False
        Else
            sender.readonly = True
        End If

    End Sub


avec un msgbox


Private Sub binary_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles binary.KeyDown
        'verifie que la valeur de la touche frappée est 0 ou 1 ou backspace ou delete 
        If e.KeyValue AscW("0") Or e.KeyValue AscW("1") Or e.KeyValue = 8 Or e.KeyValue = 46 Then
            sender.readonly = False
        Else
            MsgBox("seulement 0 ou 1")
        End If

    End Sub

Merci cs_ShayW 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de cs_ShayW
Messages postés
45
Date d'inscription
mercredi 26 mars 2008
Dernière intervention
17 août 2012
0
Merci
A titre d'exemple ...


Private Sub TextBox_prenom_candidat_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox_prenom_candidat.KeyPress

Call filtrage_saisie_clavier(e)

End Sub


Private Sub filtrage_saisie_clavier(ByVal e As System.Windows.Forms.KeyPressEventArgs)

'Filtrage des caractères pour la saisie de l'identié 
'Dim chaine_caracteres_numeriques As String = "1234567890"
'Dim chaine_caracteres_interdits As String = ".,:;/\?*"

Dim position As Integer
Dim chaine_caracteres_interdits As String = "<>,?;.:!§%*$£&°~#_/\(){}[]|@*+=1234567890"

'Test caractère numérique
'position = InStr(chaine_caracteres_numeriques, e.KeyChar)
'Si le caractère n'est pas trouvé dans la liste et si c'est pas la touche "retour arrière"
'alors le caractère n'est pas transmis au textbox
'If position 0 And Not AscW(e.KeyChar) 8 Then e.Handled = True

'Test caractère autre que ceux interdits
position = InStr(chaine_caracteres_interdits, e.KeyChar)
'Si le caractère est trouvé dans la liste alors le caractère n'est pas transmis au textbox
If position <> 0 Then e.Handled = True

End Sub



Commenter la réponse de Fabasia

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.