VB 2010

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    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))
    0
  2. Utilisateur anonyme
     
    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
    0
    1. Utilisateur anonyme
       
      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.
      0
    2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Si ta TextBox s'appelle Poids, pourquoi tu redéclares la variable en local avec un type différent ?
      0
      1. Utilisateur anonyme > NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Re,

        je ne trouve toujours pas cette fichue référence...
        0
  3. Utilisateur anonyme
     
    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.....
    

    0
    1. Utilisateur anonyme
       
      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.
      0
    2. Utilisateur anonyme
       
      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
      0
    3. Utilisateur anonyme
       
      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.
      0
    4. Utilisateur anonyme > Utilisateur anonyme
       
      Mais 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...
      0
    5. Utilisateur anonyme
       
      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".
      0
  4. Utilisateur anonyme
     
    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 !!
    0