ricepie
Messages postés8Date d'inscriptionvendredi 3 décembre 2010StatutMembreDernière intervention 1 février 2013
-
3 déc. 2010 à 12:25
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDerniè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.
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 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
Fabasia
Messages postés45Date d'inscriptionmercredi 26 mars 2008StatutMembreDernière intervention17 août 2012 3 déc. 2010 à 12:39
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