Meilleur auteur de réponses
Récupérer La valeur (Int) d'un text box

Question
-
Bonjour,
Mon problèm ets le suivant :
Je n'arrive pas à récupérer la valeur de mon TextBox qui est un entier.
Le but et de récupérer plusieurs valeurs de TextBox que l'utilisateur saisi et de pouvoir faire des opérations suite aux éléments saisis, du Type : valeur Textbox1 + Valeur Textbox2 + Valeur Textbox3 * Valeur Textbox4.
MonTextBox.Text est un "string" que j'ai essayé de caster en "Int" mais sans résultat.
J'ai essayé le Parse, le cast avec int ca marche pas.
Quelqu'un aurait il une solution ??? Merci
Réponses
-
Bonjour,
Il faudrait essayer quelque chose comme ceci ( en VC# )
Int32 val1 = Convert.ToInt32(TextBox1.Text.Trim());
Int32 val2 = Convert.ToInt32(TextBox2.Text.Trim());
Int32 val3 = Convert.ToInt32(TextBox3.Text.Trim());
Int32 val4 = Convert.ToInt32(TextBox4.Text.Trim());
Int32 Result = val1 + val2 + val3 * val4;
Attention à vérifier que chaque TextBox n'est pas vide sinon plantage
voir le lien :
http://msdn2.microsoft.com/en-us/library/sf1aw27b(VS.80).aspx
Il faut faire attention au format de la saisie qui est notamment dépendant de la langue de Windows
Le cast direct (int) string ne marche pas car vous risquez de récupérer la valeur des caractères ( voir table unicode ou ANSI...)
Il vaut mieux utiliser les fonctions apparues avec Net 1.1 ( Convert...) .Elles sont beaucoup plus fiables surtout quand on utilise try/catch.
essayer aussi TryParse qui évite le lancement d'exceptions
http://msdn2.microsoft.com/en-us/library/f02979c7.aspx
J'espère que ma réponse vous aidera à résoudre votre problème
Bonne journée
Toutes les réponses
-
Bonjour,
Il faudrait essayer quelque chose comme ceci ( en VC# )
Int32 val1 = Convert.ToInt32(TextBox1.Text.Trim());
Int32 val2 = Convert.ToInt32(TextBox2.Text.Trim());
Int32 val3 = Convert.ToInt32(TextBox3.Text.Trim());
Int32 val4 = Convert.ToInt32(TextBox4.Text.Trim());
Int32 Result = val1 + val2 + val3 * val4;
Attention à vérifier que chaque TextBox n'est pas vide sinon plantage
voir le lien :
http://msdn2.microsoft.com/en-us/library/sf1aw27b(VS.80).aspx
Il faut faire attention au format de la saisie qui est notamment dépendant de la langue de Windows
Le cast direct (int) string ne marche pas car vous risquez de récupérer la valeur des caractères ( voir table unicode ou ANSI...)
Il vaut mieux utiliser les fonctions apparues avec Net 1.1 ( Convert...) .Elles sont beaucoup plus fiables surtout quand on utilise try/catch.
essayer aussi TryParse qui évite le lancement d'exceptions
http://msdn2.microsoft.com/en-us/library/f02979c7.aspx
J'espère que ma réponse vous aidera à résoudre votre problème
Bonne journée
-
Bonjour,
Tout d'abord, on peut imaginer que le TextBox ne gère que les chiffres, cela pourrait déjà être utile et permettrait d'éviter des exceptions diverses. Cependant, ne faites jamais confiance à votre UI :-) Mieux vaut deux vérifications pour être certain que tout est bon.
Concernant le fait que cela se base sur la langue de Windows (plus exactement les regional settings car on peut avoir un Windows en français et devoir mettre des dates à la manière des anglais si les regional settings sont en anglais), il est possible de forcer l'application à tourner dans une "culture" de la manière suivante:
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
L'autre solution c'est de donner un format lors de la conversion de la valeur.
TryParse est plus gourmand qu'une simple conversion (il gère un try/catch au sein de la méthode si je me souviens bien, à vérifier) donc si il faut tester les 6 textboxs et que l'opération ne peut se faire sans que ces 6 textboxes ne soient correctement remplis, il vaut mieux privilégier un try/catch avec les conversions en son sein.
-
J'ai essayé le " Convert.ToInt32() " Ca marche très bien. Merci pour vos réponses !!
Je trouve que c'est un peu dommage qu'on ne puisse pas récupérer la valeur du textBox directement sans passer par un tas de chose....
Une autre solution je pense est de spécifier que mon champs TextBox ne contiendra que des entiers ou réels par exemple. Malheureusement j'ai pas réussi à bien le faire, tout ce que j'ai trouvé c'est le MaskedTextBox qui est configurable avec un nombre précis de chiffre qui ne corespond pas forcément à mon besoin car l'utilisateur peut entrer un entier ou réel de 2, 3 , 4 ou 10 chiffres.
Je ne sais pas si par exemple on peut spécifier dans le masque que le TextBox peut etre de type réel et le nombre de chiffre que contient ce réel peut aller de 1 à n ( par ex : 50 contient deux chiffres, 1820 contient 4 chiffres ), ou il faut obligatoirement spécifier un nombre de chiffres exact.
Personnellement j'ai créé un MaskedTextBox avec un masque de 3 Chiffres. C'est un peu embêttant car l'utilisateur doit rentrer obligatoirement 3 chiffres. par exemple pour 12 il doit taper 012, pour 3 il doit taper 003., il ne peut pas saisir un chiffre avec une virgule.....
Qu'elle est la meilleure solution pour ce type de problèmes ???? Y a t-il un masque avec n'importe quel nombre de chiffres ??? Merci pour vos réponses !!!
-