VB 2010

Résolu
Bonjour,

Shame on me, mais je teste vb2010 express, et je bute sur un truc de débutant, et tellement que cela me parait "c.n", que je me demande s'il ne s'agit pas d'un bug avec W2010.

J'ai un form "form1"
Dedans une textbox "poids"
Et un bouton btn1

Le but sera de manipuler des nombres saisis dans les textbox, mais pour déboguer, j'ai fait au mini, soit textbox et bouton pour lancer mon calcul.

Voici le code du form1

Public Class Form1
    Dim poids As Double

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        MsgBox(Val(poids))

    End Sub

end class


Si je saisis 30 dans le textbox "poids", le msgbox me renvoie 0.

WTF ????

Merci



Quand jimmy dit what'd I say, I love you baby
C'est comme qui dirait, Toute la province qui chante en anglais

4 réponses

  1. Modérateur
    Lis ma signature pour commencer.

    Ensuite, retire l'import automatique de l'espace de nom "Microsoft.VisualBasic" (propriétés du projet => Références)

    Par la suite, essayes plutôt :
    MessageBox.Show(Int.Parse(Poids.Text))
    1. Salut et merci,

      bien lu signature, et voici mon code, réduit encore

      Option Explicit On
      Option Strict On
      
      Private Sub Button1_Click()
      
          Dim poids As Double
          MessageBox.Show(Int.Parse(Poids.Text))
      End Sub
      


      Pfff pareil, m'affiche un put..n de 0

      Par contre je pense que la piste de la référence est la bonne, car dans le débogueur j'ai

      Erreur 1 Instruction non valide dans un espace de noms. C:\Users\User\documents\visual studio 2010\Projects\imc\imc\Form1.vb 4 1 imc


      Je suis allé voir, mais je ne vois pas cette réf...

      Merci en tous cas, en sachant que le but de cette appli n'est pas un "messagebox" mais des calculs.

      Ce messagebox me sert juste à déboguer petit à petit, des lignes.

      Merci

      Quand jimmy dit what'd I say, I love you baby
      C'est comme qui dirait, Toute la province qui chante en anglais
      1. EDIT : Ajout des balises de code (la coloration syntaxique).
        Explications disponibles ICI

        Ajout de la balise de citation

        <block>Texte cité ici</block>

        Merci d'y penser dans tes prochains messages.
      2. Modérateur
        Si ta TextBox s'appelle Poids, pourquoi tu redéclares la variable en local avec un type différent ?
      3. @NHenryRe,

        je ne trouve toujours pas cette fichue référence...
    2. Bonsoir,

      Comme le dit NHenry si le textbox et la variable s'appellent pareil ça va pas bien marcher, il me semble (peux pas vérifier là) que Vb ne fait pas de différence avec la casse.

        Dim poids As Double' à ce moment la variable vaut zéro et est de type double
          MessageBox.Show(Int.Parse(Poids.Text))' à ce moment là le compilateur ne sait pas trop quoi prendre.....
      

      1. Dans les conventions de nommage, il est conseillé par exemple de mettre 3 caractères rappelant le type de contrôle, puis un nom d'usage, les "mots" étant séparés par des majuscules.

        Ton textbox pourrait alors s'appeler txtPoids, un autre txtTexteQueDoitSaisirLUtilisateur.
      2. Merci,
        mais je n'ai qu'un seul textbox, dont je veux récupérer la valeur.

        J'ai juste donc un contrôle txtbox dont j'ai mis la propriété name à "poids" et un bouton pour tester.

        Merci
      3. J'ai juste donc un contrôle txtbox dont j'ai mis la propriété name à "poids"


        oui et tout le problème est là, tu déclares ensuite un variable avec le même nom.
      4. @Utilisateur anonymeMais je ne déclare rien du tout, je suis bien obligé d'utiliser le name de ma txtbox pour lui demander de m'afficher ma saisie.
        Si je retire le 'dim ......' c'est pareil.
        Pour info, avec un inputbox, no souci, mais cela ne convient pas.
        Je pense que mon souci est dans les propriétés du txtbox "poids", qui n'est pas numérique...
      5. Certes VB.Net est fortement typé, MAIS le problème ne vient pas de ça, il n'accepte pas deux objets avec le même nom.

        Essaye de mettre txtPoids comme nom à ton textbox.
        La méthode de classe Parse de la classe Int, sert justement à convertir le string contenu dans propriété Text en Int.

                Dim monInt As Integer
        
                monInt = Integer.Parse(TextBox1.Text)'ici conversion en int
        
                MessageBox.Show(monInt.ToString())'ici reconversion en string car la méthode Show prend un string en argument
        
        
        


        Toutefois, si tu as tapé "vingt-deux", int.Parse ne trouveras jamais 22, il faut avoir mis "22".
    3. Euréka !!!!!!!!!!!!!

      Le code simplissime suivant convient :
      Public Class Form1
      
          Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
              Dim v_poids As Double
              v_poids = Double.Parse(poids.Text)
              MsgBox(v_poids * 3)
      
          End Sub
      End Class
      


      Merci !!