[.NET][C#] Validation alphanumérique - Expression régulière [Résolu]

Messages postés
10
Date d'inscription
vendredi 21 novembre 2003
Dernière intervention
4 mai 2005
- - Dernière réponse : edokt
Messages postés
137
Date d'inscription
mercredi 12 janvier 2005
Dernière intervention
30 septembre 2008
- 17 mai 2005 à 01:36
Bonjour,

Je souhaiterais empécher la saisie des chiffres de 0 à 9 dans un textBox. En revanche il faut pouvoir effacer donc l'utilisation du "backspace" doit être possible.
Si vous savez comment faire, svp aidez-moi...

Merci
Afficher la suite 

Votre réponse

19 réponses

Meilleure réponse
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
43
3
Merci
Inscris toi a l'evenement KeyPress de ton textbox



this.textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);



puis :



private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if(Char.IsNumber(e.KeyChar)) e.Handled = true;

}



Et le tour est joué

Mx

Dire « Merci » 3

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

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

Commenter la réponse de MorpionMx
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
88
0
Merci
Salut,

Tu devras aussi gerer l'event TextChanged ou effectuer une validation avant traitement des données saisies : la gestion par KeyPress ne permet pas de filtrer une chaine collée par exemple. :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
43
0
Merci
Ou alors ajouter un label "Interdit de coller des données dans ce textbox"

Mx
Commenter la réponse de MorpionMx
Messages postés
10
Date d'inscription
vendredi 21 novembre 2003
Dernière intervention
4 mai 2005
0
Merci
Merci !

Pour l'évent KeyPress, no souci

En revanche pour le TextChanged, le paramètre est de type EventArgs et je n'arrive pas à récupérer le caractère saisit contrairement à KeyPressEnventArgs. Impossible de faire un e.KeyChar et je vois pas comment faire autrement....
Commenter la réponse de audweiller
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
88
0
Merci
Justement, il s'agit de faire la validation de toute la chaine (textBox1.Text) pour en supprimer les chiffres si il y en a.
Mais côté performances le mieux est de le faire à la validation des données, sinon à chaque modification (et donc aussi à chaque saisie de caractère) il y aura parcours de la chaine, côté perfs ça ne doit pas être génial.
Sinon il doit bien y avoir moyen de filtrer uniquement la chaine, à voir.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
10
Date d'inscription
vendredi 21 novembre 2003
Dernière intervention
4 mai 2005
0
Merci
Ok je te remercie pour ton aide !
Commenter la réponse de audweiller
Messages postés
305
Date d'inscription
mardi 11 février 2003
Dernière intervention
24 avril 2009
5
0
Merci
On peux pas simplement empecher le copier-coller ?

Eric
Commenter la réponse de ricklekebekoi
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
88
0
Merci
Si, il suffit de créer un controle heritant de TextBox avec juste ce code là :

public class NoPasteTextBox : System.Windows.Forms.TextBox
{
private const int WM_PASTE = 0x0302;

protected override void WndProc(ref System.Windows.Forms.Message m)
{
if ( m.Msg != WM_PASTE)
base.WndProc (ref m);
}
}

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
0
Merci
moi j'utilise l'évènement Validating avec une Regex (new Regex("^[0-9]*$"))

si ca ne correspond pas, je mets e.Cancel = true, ainsi le focus ne quitte pas le textbox.
On peut aussi, à l'aide d'un ErrorProvider afficher une icône et un message d'erreur.

Sébastien FERRAND

Blog :
http://blogs.developpeur.org/sebmafate</FO< body>
Commenter la réponse de sebmafate
Messages postés
137
Date d'inscription
mercredi 12 janvier 2005
Dernière intervention
30 septembre 2008
0
Merci
Salut, je voudrais just demander



Tu travaille en Window Forms ou en Asp



Si c'est Windows Forms: donc tu a un venemenet Validating pour le textBox oui?



Tu arrive à fermer lea feuille (form.close) sans declncher l'evenment validating de textbox?



Merci!!
Commenter la réponse de edokt
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
43
0
Merci
Si tu met la propriété CausesValidation du textbox a false, ca marche pas ?

Mx
Commenter la réponse de MorpionMx
Messages postés
137
Date d'inscription
mercredi 12 janvier 2005
Dernière intervention
30 septembre 2008
0
Merci
ecoute tu est enligne sur msn parexmple je vopulais t'en parler. mon
email est edobour@hotmail.com;; Il y a deux jour je suis
sur cette probmlem
Commenter la réponse de edokt
Messages postés
137
Date d'inscription
mercredi 12 janvier 2005
Dernière intervention
30 septembre 2008
0
Merci
Si tu met le CausseValidation false le bouton Valider ne vas pas declencher la validation non plus!!!
Commenter la réponse de edokt
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
88
0
Merci
Sert toi de l'event Closing pour mettre CausesValidation à false.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
137
Date d'inscription
mercredi 12 janvier 2005
Dernière intervention
30 septembre 2008
0
Merci
tu a essayé ce que tu propose??

l'evenement validating de textboc se declanche avnt l'evenement closinng de la feuille!!!!
Commenter la réponse de edokt
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
88
0
Merci
Exact, je me suis emmelé les pinceaux dans l'ordre des events.
Pour éviter de se retrouver dans un cas d'impossibilité de fermeture du form tant que les données ne sont pas valides, tu peux forcer
e.Cancel = false
au niveau de l'event Closing du Form (par defaut il vaut false, sauf dans le cas d'un Validating "bloquant")

Pour ce qui est de la détection de la fermeture du Form au moment de valider les données je me demande si c'est faisable.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
137
Date d'inscription
mercredi 12 janvier 2005
Dernière intervention
30 septembre 2008
0
Merci
Justement c'est ça le problem. Quand on click sur le Top Right x ,
avant de executer l'evenement closing il declenche l'evenement
Validating de TextBox, parceque au moment quand tu click le Top Right X
le TextBox perd le focue don il delcnhe l'evenement Validating.



Si tu a essayer tu peux m'envoyer la solution de ce qur tu a fait Merci, Je trouve que c'est un problem de mogique ..
Commenter la réponse de edokt
Messages postés
305
Date d'inscription
mardi 11 février 2003
Dernière intervention
24 avril 2009
5
0
Merci
Et si ta validation tu la ferais au OnClick de la souris sur ta form plutot ke lorsque tu perd le focus ?



Comme sa si tu clique hors de la textbox bah tu valide, sinon tu fait rien ... sa te permetterais de gerer ou il peu cliquer.

Eric
Commenter la réponse de ricklekebekoi
Messages postés
137
Date d'inscription
mercredi 12 janvier 2005
Dernière intervention
30 septembre 2008
0
Merci
Je peux plus la ..



Chers amis.



Je sais que il y a plusiuers moyen de valider de control, Il y a en a plain, je peux meme vous les proposer.

1. on peux utiliser l'evenement Leave de Textbox: on verifie, et si il
y a une erreur on fait textbox.Select() et le textbox ne perd pâs le
focus , en plus l'evenement leave ne se declneche pas quand on ferme la
feuille. Donc une solution.



2. On peux faire le control de validation sous un click de bouton valider par exemple.

On fait la verification en appeleant une fonction etc.



3. On peux mettre de fonction dans l'evenement KeyPress ou bien Chnage



4. On peux créer le control herite de textBox qui par exemple ne prend que de valeurs numeriques.



Il y a en plain de moyen. Le problem pourquoi ça marche le Validating ou est la logique de .Net.

et SVP ne proposer pas d'autre solution si vous ne voyez pas comment il faut fair en utilisant Validating et CausesValiidation





Merciiiiiiiiiiii, Beaucoup.....................
Commenter la réponse de edokt

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.