Textbox et interdire certains caracteres !!! [Résolu]

Signaler
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008
-
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008
-
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

Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
For






Each
c

As



Char



In
tabChar


      If
e.KeyChar = c

Then






      '  Exit Sub

      sender.Text =




" error"






      End



If






NextCa ça marche.

<hr />
@+  
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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 />
@+  
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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.
Messages postés
46
Date d'inscription
mardi 9 décembre 2003
Statut
Membre
Dernière intervention
25 novembre 2006

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
@+
Messages postés
86
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
10 décembre 2006

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
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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!
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008

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
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008

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
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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 />

@+  
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008

Oui mais aussi !

Je vous remerecie en tout cas !

Christophe
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008

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
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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 />

@+  
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008

Ok drahcir

Trop fort ;-)

Merci beaucoup chef ;-)

Bonne journée a toi
Christophe