Restriction TextBox VB.NET
( Je n'ai pas trouvé de section Présentation, alors je poste directement ma question. )
Bonjour,
Je sais que ce sujet a été maintes fois abordé, mais si je me permet de poster c'est que les réponses glanées sur le net ne m'ont pas aidé.
J'aimerai qu'une TextBox n'accepte que les chiffres de 0 à 9, les touches Virgule, Backspace et Delete.
Dans ce post, les réponses sont du genre "Lis le cours VB.NET (de Philippe Lasserre)" ou "On va pas le faire à ta place !"
Je l'ai donc lu et j'ai trouvé une technique qui fonctionne parfaitement, adaptée a mes demandes cela donne :
Code:
1 2 3
| Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyChar <> "," And e.KeyChar <> "0" And e.KeyChar <> "1" And e.KeyChar <> "2" And e.KeyChar <> "3" And e.KeyChar <> "4" And e.KeyChar <> "5" And e.KeyChar <> "6" And e.KeyChar <> "7" And e.KeyChar <> "8" And e.KeyChar <> "9" Then e.KeyChar = CType("", Char)
End Sub |
Malheureusement, selon Microsoft, il n'y a pas de codes pour les touches Backspace et Delete.
De plus, ca fait un "TING" pour le moins énervant à chaque fois qu'on entre une touche non valide.
Il faudrait donc trouver une autre méthode.
Je sais par contre que les touches que je cherche à accepter ou refuser ont toutes un code Ascii distinct.
Seulement je ne comprends pas les différents exemples trouvé par-ci par-là.
Code:
1 2 3 4 5 6 7 8 9 10
| Private Sub montant_KeyPress(Index As Integer, KeyAscii As Integer)
'les chiffres 0 à 9 ont les codes ASCII 48 à 57
'43 est le signe +, 45 est le signe - et 46 est le point .
If (KeyAscii < 48 Or KeyAscii > 57) _
And Not KeyAscii = 43 _
And Not KeyAscii = 45 _
And Not KeyAscii = 46 Then
KeyAscii = 0
End If
End Sub |
Je recopie ça ( bouh c'est mal je sais :?), et je rajoute
"montant_KeyPress(TextBox1.Text)"
dans la section
"Private Sub TextBox1_TextChanged ..."
Cela donne :
Code:
1 2 3
| Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
montant_KeyPress(TextBox1.Text)
End Sub |
Mais je recois une erreur :
Citation:
Argument not specified for parameter 'KeyAscii' of 'Private Sub montant_KeyPress(Index As Integer, KeyAscii As Integer)'
Je suis totalement perdu.
Si une âme charitable pouvais me donner un coup de main, je lui en serai très reconnaissant !
Je travail sur Visual Basic 2010.
Merci d'avance.
François.