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

Résolu
audweiller Messages postés 10 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 4 mai 2005 - 26 avril 2005 à 16:05
edokt Messages postés 137 Date d'inscription mercredi 12 janvier 2005 Statut Membre 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

19 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 avril 2005 à 16:22
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
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
26 avril 2005 à 16:28
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#
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 avril 2005 à 16:30
Ou alors ajouter un label "Interdit de coller des données dans ce textbox"

Mx
0
audweiller Messages postés 10 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 4 mai 2005
26 avril 2005 à 17:16
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....
0

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

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
26 avril 2005 à 17:20
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#
0
audweiller Messages postés 10 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 4 mai 2005
26 avril 2005 à 17:24
Ok je te remercie pour ton aide !
0
ricklekebekoi Messages postés 303 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 24 avril 2009 5
26 avril 2005 à 22:57
On peux pas simplement empecher le copier-coller ?

Eric
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
26 avril 2005 à 23:36
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#
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
27 avril 2005 à 09:55
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>
0
edokt Messages postés 137 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 30 septembre 2008
15 mai 2005 à 13:23
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!!
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
15 mai 2005 à 13:26
Si tu met la propriété CausesValidation du textbox a false, ca marche pas ?

Mx
0
edokt Messages postés 137 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 30 septembre 2008
15 mai 2005 à 13:55
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
0
edokt Messages postés 137 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 30 septembre 2008
15 mai 2005 à 13:57
Si tu met le CausseValidation false le bouton Valider ne vas pas declencher la validation non plus!!!
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 mai 2005 à 18:14
Sert toi de l'event Closing pour mettre CausesValidation à false.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
edokt Messages postés 137 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 30 septembre 2008
15 mai 2005 à 20:30
tu a essayé ce que tu propose??

l'evenement validating de textboc se declanche avnt l'evenement closinng de la feuille!!!!
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 mai 2005 à 21:50
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#
0
edokt Messages postés 137 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 30 septembre 2008
15 mai 2005 à 22:00
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 ..
0
ricklekebekoi Messages postés 303 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 24 avril 2009 5
17 mai 2005 à 00:06
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
0
edokt Messages postés 137 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 30 septembre 2008
17 mai 2005 à 01:36
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.....................
0
Rejoignez-nous