Comment utiliser le Keypress [Résolu]

ricepie 8 Messages postés vendredi 3 décembre 2010Date d'inscription 1 février 2013 Dernière intervention - 3 déc. 2010 à 12:25 - Dernière réponse : cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention
- 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
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 3 déc. 2010 à 13:51
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cs_ShayW
Fabasia 45 Messages postés mercredi 26 mars 2008Date d'inscription 17 août 2012 Dernière intervention - 3 déc. 2010 à 12:39
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.