Textbox et interdire certains caracteres !!!

Résolu
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 - 27 juil. 2006 à 08:53
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 - 28 juil. 2006 à 09:38
Bonjour,

Je bosse avec vb net et j'utilises visual studio 2003 depuis peu :-( !

sur ma form principale, j'ai un textbox simple mais limite via un maxlenght de 20, j'aimerais quand quand l'utilisateur entre certains caracteres comme par exemple :

<,>,@, !, ?

que ceux ci soient rejettes par l'application avec un messagebox par exemple !

Si quelqu'"un avait un p'tit bout de code a me proposer ou une solution pour faire cela je suis preneur !

Je vous remercie
Christophe

13 réponses

cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
27 juil. 2006 à 14:08
For






Each
c

As



Char



In
tabChar


      If
e.KeyChar = c

Then






      '  Exit Sub

      sender.Text =




" error"






      End



If






NextCa ça marche.

<hr />
@+  
3
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
28 juil. 2006 à 09:21
Re,

je viens de tester ça, et ça marche :

Sub TxtService_TextChanged(ByVal sender AsObject, ByVal e As System.EventArgs) Handles TxtService.TextChanged

      Dim txtice
As
Char

      Dim tabchar()
As
Char = {
"<",
">"}

      For
Each txtice
In tabchar

            If sender.Text.indexof(txtice) <> -1
Then            MsgBox(

"Invalid characters " & txtice, MsgBoxStyle.Exclamation,
"[ERROR]")            TxtService.Text =

""

            End
If

      Next

End
Sub

Next

<hr />
@+  
3
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
27 juil. 2006 à 08:59
Salut,


 


utilise l'évènement TextChanged de ton TextBox.


Private
Sub TextBox1_TextChanged(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles TextBox1.TextChanged



If
TextBox1.Text.IndexOf("<") <> -1

Then



MsgBox("Ce caractère est interdit!!")







End



If






End



Sub

Tu peux ensuite le supprimer.
0
olanfr Messages postés 46 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 25 novembre 2006
27 juil. 2006 à 09:04
Bonjour,


Moi je l'utilise sur le KeyPress :








Private



Sub
tbMdlCreate_KeyPress(

ByVal
sender

As



Object
,

ByVal
e

As
System.Windows.Forms.KeyPressEventArgs)

Handles
tbMdlCreate.KeyPresse.Handled = Texte_Alphanumeric(e.KeyChar)


End



Sub
 



Public






Function
Texte_Alphanumeric(

ByVal
c

As



Char
)

As



Boolean






If
c = Microsoft.VisualBasic.ChrW(13)

Or
c = Microsoft.VisualBasic.ChrW(8) _


Or
(c > Microsoft.VisualBasic.ChrW(47)

And
c < Microsoft.VisualBasic.ChrW(58)) _


Or
(c > Microsoft.VisualBasic.ChrW(64)

And
c < Microsoft.VisualBasic.ChrW(91)) _


Or
(c > Microsoft.VisualBasic.ChrW(96)

And
c < Microsoft.VisualBasic.ChrW(123))

Then






Return



False






Else






Return



True






End



If






End



Function
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ulala2 Messages postés 86 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 décembre 2006
27 juil. 2006 à 09:15
bonjour,

je ne sais pas si c'est toujours valable en .net, mais moi j'utilise une regex :

Private Sub codepostal_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0123456789]" And KeyAscii <> Asc(vbBack) Then KeyAscii = 0
End Sub
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
27 juil. 2006 à 09:32
Avec VS 2005, il existe désormais le contrôle MaskedTextBox qui permet de définir directement son masque de saisie, c'est encore plus pratique!
0
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
27 juil. 2006 à 13:59
salut a tous,

merci deja a vous pour vos posts !

voila ce que j'ai fait mais ca ne fonctionne pas :
J'ai declare un tableau de char avec deux caracteres interdits
je parcourre mon tableau qd le user frappe une touche si cette touche fait partie du tableau je voudrais setter le textbox avec un message tout simplement !

mais ca ne marche pas !
ca plante meme pas y'a rien qui se passe !

Private
Sub TxtService_KeyPress(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.KeyPressEventArgs)
Handles TxtService.KeyPress

Dim tabChar()
As
Char = {">", "<"}

Dim i
As Int16

For i = 0
To i < tabChar.Length
Step 1

If e.KeyChar = tabChar(i)
Then

'Exit SubTxtService.Text = " error"

End
If

Next

End
SubSi vous avez une idée je suis preneur !

Je vous remercie
Christophe
0
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
27 juil. 2006 à 14:43
Salut salut,

Je vous remercie tous pour vos posts et votre aide !

ca tourne c'est impeccable

merci et bonne fin de journée
christophe
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
27 juil. 2006 à 14:53
Ok ça marche, mais ce qui m'échappe, c'est pourquoi dans le code que tu as proposé, on ne rentre pas dans la boucle for!!!!


J'ai fait le test en pas à pas, et on y rentre pas!! Ca doit être évident, mais je n'y comprend rien

Si quelqu'un peut éclairer ma lanterne....





<hr />

@+  
0
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
27 juil. 2006 à 18:19
Oui mais aussi !

Je vous remerecie en tout cas !

Christophe
0
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
28 juil. 2006 à 09:05
Re bonjour a tous,

Eu oui c'est encore moi juste pour une p'tite question encore concernant le key press !!!

voila ce que j'ai fait grace a vous :-):
Private

Sub TxtService_KeyPress(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.KeyPressEventArgs)
Handles TxtService.KeyPress

Dim txtice
As
Char

For
Each txtice
In tabChar

If e.KeyChar = txtice
ThenMsgBox("Invalid characters " & e.KeyChar, MsgBoxStyle.Exclamation, "[ERROR]")

TxtService.Text = ""

End
If

Next

Mais le probleme en fait c'est que le textbox n'est jamais remis a blanc !

quand je rentre un mauvais caracteres celui ci s'affiche dans le text box !!!!

et bien sur je voudrais que celui ci ne s'affiche pas dans le text box !

vos idées et bout de codes sont les bienvenues !

Bonne journée
Christophe
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
28 juil. 2006 à 09:18
En fait, quand tu lui demandes de vider le textbox, le caractère tapé n'y a pas encore été ajouté. Si tu mets un espion sur TxtService.Text, tu verras qu'il est vide.....

Je pense que c'est dans l'évènement TextChanged qu'il faut que tu agisses sur le contenu du textbox.





<hr />

@+  
0
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
28 juil. 2006 à 09:38
Ok drahcir

Trop fort ;-)

Merci beaucoup chef ;-)

Bonne journée a toi
Christophe
0