( 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 :Malheureusement, selon Microsoft, il n'y a pas de codes pour les touches Backspace et Delete.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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à.
Je recopie ça ( bouh c'est mal je sais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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), et je rajoute
"montant_KeyPress(TextBox1.Text)"
dans la section
"Private Sub TextBox1_TextChanged ..."
Cela donne :
Mais je recois une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Je suis totalement perdu.Argument not specified for parameter 'KeyAscii' of 'Private Sub montant_KeyPress(Index As Integer, KeyAscii As Integer)'
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.
Partager