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

audweiller 10 Messages postés vendredi 21 novembre 2003Date d'inscription 4 mai 2005 Dernière intervention - 26 avril 2005 à 16:05 - Dernière réponse : edokt 137 Messages postés mercredi 12 janvier 2005Date d'inscription 30 septembre 2008 Dernière intervention
- 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
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 26 avril 2005 à 16:22
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

Merci MorpionMx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de MorpionMx
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 26 avril 2005 à 16:28
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
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 26 avril 2005 à 16:30
0
Merci
Ou alors ajouter un label "Interdit de coller des données dans ce textbox"

Mx
Commenter la réponse de MorpionMx
audweiller 10 Messages postés vendredi 21 novembre 2003Date d'inscription 4 mai 2005 Dernière intervention - 26 avril 2005 à 17:16
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
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 26 avril 2005 à 17:20
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
audweiller 10 Messages postés vendredi 21 novembre 2003Date d'inscription 4 mai 2005 Dernière intervention - 26 avril 2005 à 17:24
0
Merci
Ok je te remercie pour ton aide !
Commenter la réponse de audweiller
ricklekebekoi 305 Messages postés mardi 11 février 2003Date d'inscription 24 avril 2009 Dernière intervention - 26 avril 2005 à 22:57
0
Merci
On peux pas simplement empecher le copier-coller ?

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

Mx
Commenter la réponse de MorpionMx
edokt 137 Messages postés mercredi 12 janvier 2005Date d'inscription 30 septembre 2008 Dernière intervention - 15 mai 2005 à 13:55
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
edokt 137 Messages postés mercredi 12 janvier 2005Date d'inscription 30 septembre 2008 Dernière intervention - 15 mai 2005 à 13:57
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
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 15 mai 2005 à 18:14
0
Merci
Sert toi de l'event Closing pour mettre CausesValidation à false.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
edokt 137 Messages postés mercredi 12 janvier 2005Date d'inscription 30 septembre 2008 Dernière intervention - 15 mai 2005 à 20:30
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
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 15 mai 2005 à 21:50
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
edokt 137 Messages postés mercredi 12 janvier 2005Date d'inscription 30 septembre 2008 Dernière intervention - 15 mai 2005 à 22:00
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
ricklekebekoi 305 Messages postés mardi 11 février 2003Date d'inscription 24 avril 2009 Dernière intervention - 17 mai 2005 à 00:06
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
edokt 137 Messages postés mercredi 12 janvier 2005Date d'inscription 30 septembre 2008 Dernière intervention - 17 mai 2005 à 01:36
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.