Verifier le type du texte saisie dans un textbox

Signaler
Messages postés
38
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
26 mai 2006
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour,
Je ne trouve pas comment faire pour verifier si la chaine de caractere saisie dans une textbox est de type numerique ou pas.
Sous VB je faisais Isnumeric et s'etait bon, mais là je ne voit pas.
Si quelqu'un peut m'aider.

14 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Char.IsNumber(char)

Mx
Messages postés
38
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
26 mai 2006

ça verifie si un caractere precis est numerique.
Mais moi jve verifier toute la textbox.
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Bah tu t'inscris a l'evenement KeyPress de ta textbox, et tu vérifies le caractere tapé...



protected override void OnKeyPress(KeyPressEventArgs e)

{

if (char.IsNumber(e.KeyChar)) e.Handled = false;

else if (char.IsControl(e.KeyChar)) e.Handled = false;

else e.Handled = true;

}

Mx
Messages postés
13
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
19 avril 2005

bonjour, j'aimerai savoir ce que represente le e.Handled = false; car j'ai déjà utilisé des keypress sans et ca fonctionne...
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Ca veut justement dire que tu t'occupes pas de cet evenement KeyPress,
contrairement a True, qui voudrait dire que tu "prends la main" sur
l'evenement, pour y effectuer ton traitement.

Mx
Messages postés
25
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 mai 2006

et pour avoir le 3e caractère obligatoirement ':' ?? Je n'ais pas réussi à le rentré en dur.

et je n'ai pas le framework 2 pour avoir le maskedtextbox.

merci
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Salut,
Je pense que dans ton cas il faut mieux s'inscrite a l'evenement Validating que ton TextBox

Et dans la méthode associée a l'evenement, tu mets :


<HR>


private void textBox1_Validating(
object sender,
CancelEventArgs e)
{

if (
this.textBox1.Text.Length >= 3)
{

if (
this.textBox1.Text[2] ==
':')

MessageBox.Show(
"ok");

else
{

MessageBox.Show(
"pas bon");
e.Cancel =
true;
}
}


<HR>



Mx
MVP C#
Messages postés
25
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 mai 2006

this.txtde[2] = ':'; ne fonctionne pas
Messages postés
25
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 mai 2006

merci.
désolé j'avais pas vu ta réponse
Messages postés
25
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 mai 2006

en fait je voudrais le rentrer en dur. avant qu'il ne saisisse quelque chose.

ex: __:__ un masque d'horaire..
j'ai essayé ca dans InitializeComponent : this.txtde[2] = ':';
mais il n'en veut pas.

merci
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Dans ton cas, this doit faire reference a ta Form, pas a ton TextBox
Mais de toutes facons, ca n'empechera pas l'utilisateur de le modifier



Mx
MVP C#
Messages postés
25
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 mai 2006

ma textbox c'est txtde !

On peut pas la fixer en dur alors?
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Non tu ne peux pas dans ce cas la.
La propriété Text[i] de ton TextBox est en lecture seule



Mx
MVP C#
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Salut,

Le type string est immuable, chaque opération donne une nouvelle chaine, et on ne peut pas modifier directement un caractère.

Pour faire ton changement tu peux passer par un StringBuilder :
StringBuilder sb = new StringBuilder(this.txtde.Text);
sb[2]=':';
this.txtde.Text = sb.ToString();
sb = null;

/*
coq
MVP Visual C#
*/