LIMITER LA SAISIE À CERTAINS CARACTÈRES/TOUCHES DANS UN TEXTBOX EN VB.NET

cs_Falk Messages postés 31 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 19 avril 2003 - 13 avril 2003 à 21:20
blq Messages postés 97 Date d'inscription vendredi 22 octobre 1999 Statut Membre Dernière intervention 13 juin 2016 - 17 févr. 2012 à 21:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/6084-limiter-la-saisie-a-certains-caracteres-touches-dans-un-textbox-en-vb-net

blq Messages postés 97 Date d'inscription vendredi 22 octobre 1999 Statut Membre Dernière intervention 13 juin 2016 1
17 févr. 2012 à 21:47
Tester avec VB 2010. Simple et efficace. Merci !

Pour compléter et pour ceux souhaitant traiter plusieurs champs en même temps sans dupliquer le code, il suffit de faire ainsi (pour le premier exemple mais c'est pareil pour les autres test en exemple) :

Private Sub CheckDigit(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress, TextBox2.KeyPress, TextBox3.KeyPress If Char.IsDigit(e.KeyChar) False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then e.Handled True
End Sub

Le label CheckDigit n'est pas la désignation d'un TextBox, mais un label de votre choix (vous pouvez mettre Toto :-)), c'est l'ajout des TextBox avec leur Event qui permet de regrouper en une seule fonction le traitement pour tous les TextBox ajoutés.
B Xeon Otman Messages postés 6 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 27 septembre 2009
11 août 2010 à 14:10
Salut, je veux juste ajouter quelques chose sur la fonction "majuscules_KeyPress" :

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim pos As Integer = TextBox1.SelectionStart
If Char.IsUpper(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then
e.Handled = True
If Char.IsLetter(e.KeyChar) Then
TextBox1.Text = TextBox1.Text.Insert(pos, e.KeyChar.ToString.ToUpper)
TextBox1.SelectionStart = pos + 1
End If
End If
End Sub
arapahoo Messages postés 26 Date d'inscription lundi 15 mai 2006 Statut Membre Dernière intervention 11 juillet 2008
18 août 2007 à 11:13
Excellent et compact Merci 10
avelone Messages postés 15 Date d'inscription dimanche 5 août 2007 Statut Membre Dernière intervention 30 novembre 2010
5 août 2007 à 20:03
Merci pour le code pour gérer que les chiffres et les virgules.

Très Bien

Merci

C'est excellent
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
6 mars 2007 à 12:34
effectivement, e.KeyChar.IsLetter(e.KeyChar) est à remplacer par Char.IsLetter(e.KeyChar)
Le code date de 4 ans, j'apprenais la POO par tatonnement... ^^

Par contre pour ta "question taquine", effectivement, elle taquine... il faudrait penser à empecher le copier coller, qui peut tout faire exploser.
Je n'ai pas le temps de regarder tout de suite, mais on doit pouvoir ruser assez facilement.
Merci de tes remarques :)
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
5 mars 2007 à 15:19
pas mal le e.handled = true ...
faut que je teste ça!

par contre c'est louche ton " e.KeyChar.IsLetter(e.KeyChar) "
ça semble bizarre d'appeler une fonction avec lui même en parametre.

monobjet.mafonction (monobjet) ... chelou

je suppose que c'est une réminiscence de l'héritage ...



tite dernière question taquine, si on fait un copié collé dans ton textbox, s'passe quoi?


vb nouille, 4 ans plus tard
cs_666Ange Messages postés 19 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 mars 2009
19 août 2003 à 18:05
Merci pour le e.handled = true !!!
LittleKeichi Messages postés 6 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 25 novembre 2011
17 août 2003 à 10:31
Kler ke c simpa moi aussi je me suis fé c**** comme tu dis et pis finalement j'avais tjrs po de soluce. Donc un franc Merci s'impose :)
À la revoyure !
cs_Falk Messages postés 31 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 19 avril 2003
13 avril 2003 à 21:20
Vraiment Simpa ta source, dans le cadre de mon convertisseur Euros j'avais "bidouillé en testant si ma valeur d'entrée était de type Numérique (If Not IsNumeric(txtTaux.Text) Then...), ta solution semble plus fiable merci =)
Rejoignez-nous