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

Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Dernière intervention
27 novembre 2008
- - Dernière réponse : cs_jimmy69
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
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
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
4
3
Merci
For






Each
c

As



Char



In
tabChar


      If
e.KeyChar = c

Then






      '  Exit Sub

      sender.Text =




" error"






      End



If






NextCa ça marche.

<hr />
@+  

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 89 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_drahcir
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
4
3
Merci
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 />
@+  

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 89 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_drahcir
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
4
0
Merci
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.
Commenter la réponse de cs_drahcir
Messages postés
46
Date d'inscription
mardi 9 décembre 2003
Dernière intervention
25 novembre 2006
0
Merci
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
@+
Commenter la réponse de olanfr
Messages postés
86
Date d'inscription
lundi 27 janvier 2003
Dernière intervention
10 décembre 2006
0
Merci
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
Commenter la réponse de Ulala2
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
4
0
Merci
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!
Commenter la réponse de cs_drahcir
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Dernière intervention
27 novembre 2008
0
Merci
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
Commenter la réponse de cs_jimmy69
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Dernière intervention
27 novembre 2008
0
Merci
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
Commenter la réponse de cs_jimmy69
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
4
0
Merci
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 />

@+  
Commenter la réponse de cs_drahcir
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Dernière intervention
27 novembre 2008
0
Merci
Oui mais aussi !

Je vous remerecie en tout cas !

Christophe
Commenter la réponse de cs_jimmy69
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Dernière intervention
27 novembre 2008
0
Merci
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
Commenter la réponse de cs_jimmy69
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
4
0
Merci
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 />

@+  
Commenter la réponse de cs_drahcir
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Dernière intervention
27 novembre 2008
0
Merci
Ok drahcir

Trop fort ;-)

Merci beaucoup chef ;-)

Bonne journée a toi
Christophe
Commenter la réponse de cs_jimmy69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.