IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

probleme avec opération logique


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Par défaut probleme avec opération logique
    Bonjour
    Voila j'ai besoin de faire un petit calcul mais je n'obtientpas ce qui je souhaiterai.
    Voila j'ai A, B deux entiers
    J'aimerai faire

    A=A +( B*2)
    Monlabel.text=A

    A chaque fois que je click sur mon bouton j'ajoute (B*2) à A et j'affiche dans mon label.
    Mon probleme c'est que l'addition ne se fait pas.
    Comment ça se fait ?

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    pourquoi ne pas nous montrer le vrai code ... avec la déclaration des variables et de la fonction ...?

    puis sur dim

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Par défaut
    voici mon code.Je n'est aucune erreur de compilation et toutes mes variables sont bien déclarées au début de mon programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mise = TextBox6.Text
    N = ListBox1.SelectedIndex
    If val1 = N Then
                TextBox5.Text = ("GAGNER")
                gain = gain + (mise * 20)
                Label5.Text = gain
    end if

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par babylone_59 Voir le message
    ..et toutes mes variables sont bien déclarées au début de mon programme...
    comment ? et la procédure ?

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim N As Integer
       Dim mise As Integer        
       Dim gain As Integer

  6. #6
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    L'addition ne se fait pas car au début de ta procédure de Click tu recrée la variable "gain" donc tu la réinitialise à 0 à chaque fois, ce qui fait que la ligne

    gain = gain + (mise * 20) veut en réalité dire gain = 0 + (mise * 20)

    Il te faut placer la variable "gain" hors de la procédure comme une variable partagée (ou bien recopier son contenu dans une variable partagée que tu récupère au début de la procédure)

    Essaie ça pour voir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ' quelque part hors des procédures (variables globales)
    Private gain As Integer
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If val1 = CInt(ListBox1.SelectedIndex) Then
            TextBox5.Text = "GAGNER"
            gain += CInt(TextBox6.Text) *20
            Label5.Text = gain.ToString()
        End If
    End Sub
    Juste quelques remarques en passant:
    - Essaie de nommer tes contrôles et tes variables d'une manière plus "parlante" tu t'y retrouveras mieux et quand tu auras besoin d'aide comme là on arrivera mieux à savoir quoi sert à quoi.
    - Fais également attention aux conversion tu stockes des valeurs récupérées dans un TextBox directement dans une variable de type Integer, c'est risqué tout ça:

    Exemple:
    Dans ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mise = TextBox6.Text
    Ou comme je l'ai fait pour respecter ton principe de fonction mais qui peut présenter des soucis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gain += CInt(TextBox6.Text) *20
    Si jamais TextBox6.Text contient du texte cela va déclencher une exception
    pour ce genre de problème tu as plusieurs solutions plus ou moins efficaces:
    - Passer par un "Integer.TryParse" (mais un peu gourmand comme solution)
    - Gérer un contrôle de saisie dans l'évènement KeyPress du TextBox par exemple.
    - Remplacer ton TextBox par un NumericUpDown qui est conçu à manipuler des valeurs numériques (la solution que j'adopterais personnellement)

    Bien sûr tout dépend du contexte et de l'utilisation de ton programme.

    En espérant avoir pu être utile...

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/11/2010, 03h14
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo