Comment utiliser le Keypress

Résolu
ricepie Messages postés 8 Date d'inscription vendredi 3 décembre 2010 Statut Membre Dernière intervention 1 février 2013 - 3 déc. 2010 à 12:25
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 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.

2 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
3 déc. 2010 à 13:51
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
3