Verif type

Signaler
Messages postés
36
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2009
-
Messages postés
495
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
9 novembre 2007
-
Bonsoir tout le monde
Je voudrais tester si le caractere tapé par l'utilisateur est un chiffre, sachant que ma textbox n'accepte q'un caractere, donc il suffit de verifier que le type est int et on se fiche de la virgule.
Et si je ne fais pas ce test, le programme plante puisqu'il essaye de convertir une lettre en entier

voici mon code:

if(this.Text != string.Empty)
{
if(//voici le trest qu'il me manque
return int.Parse(this.Text);
else
{
MessageBox.Show("Vous devez entrez un chiffre");
this.Clear();
return 999;
}
}
else
return 0;



Merci d'avance

6 réponses

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

Si .Net 2.0, en utilisant plutôt TryParse.

Sinon, en gérant l'exception :

if(this.Text != string.Empty)
{
int ret;
try
{
ret = int.Parse(this.Text);
}
catch
{
MessageBox.Show("Vous devez entrez un chiffre");
this.Clear();
ret = 999;
}
}
else
ret = 0;

return ret;

/*
coq
MVP Visual C#
*/
Messages postés
36
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2009

Merci beaucoup
Cela fonctionne bien.
Cependant un autre probleme est survenu après avoir réglé celui-ci, c'est que s'il ne s'agit pas d'un chiffre, on efface la textbox.
Mais dans mon programme, j'ai un test qui empeche d'entrez 0 dans la textbox, et donc il faudrait effacer la case sans que mon programme ne me dise "vous ne devez pas entrez 0"
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Dans ce cas là met ta valeur par défaut au lieu de vider le contenu. 1 je suppose, si tu empêches la saisie de 0.
Ou ne retourne pas 0 en cas de chaîne vide.

/*
coq
MVP Visual C#
*/
Messages postés
36
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2009

non mais si je met la valeur par defaut "1", ca m'affichera 1, alors que je veux que la case soit vide
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Donc ne retourne pas 0 si la chaine est vide.

/*
coq
MVP Visual C#
*/
Messages postés
495
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
9 novembre 2007
1
char c = this.Text[0];

int ret;
if (c == '0')
{
this.Text = "";
return (0);
}
else if (c >= '1' && c <= '9')
return ((int)(c - '0'));
else
{
MessageBox.Show("Vous devez entrer un chiffre entre 1 et 9");
return (999);
}