none
Récupérer La valeur (Int) d'un text box RRS feed

  • 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
    mercredi 26 décembre 2007 17:29

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

    jeudi 27 décembre 2007 00:08

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

    jeudi 27 décembre 2007 00:08
  •  

    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.

    jeudi 27 décembre 2007 09:35
  •  

    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 !!!

    samedi 29 décembre 2007 22:47
  • "############" 12 # en fait.

    Cela ne convient pas ?

    Pour les virgules :

    "############.99"

     

    lundi 7 janvier 2008 15:58