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

VB.NET Discussion :

problème condition boucle while [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2012
    Messages : 44
    Par défaut problème condition boucle while
    Bonjour à tous,

    Je suis débutant en VB.net, voici mon programme ci-dessous.
    J'ai une erreur au niveau de la condition while, je voudrais que ce qu'il y a dans la boucle while s'effectue à chaque fois que l'utilisateur appuie sur le bouttonP de la Form4 or je ne vois pas comment faire même en cherchant sur les tutoriels.

    Merci d'avance pour votre aide.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
            Dim x As Integer = 10
            While Form4.ButtonP.Click
                If Form4.TextBoxbranche1.Text = "" Then
                Else
                    e.Graphics.DrawLine(Pens.Red, x, 40, x + 90, 40)
                    e.Graphics.DrawString(Form4.TextBoxbranche1.Text, Font, Brushes.Black, 40, 27)
                End If
     
                If Form4.TextBoxbranche2.Text = "" Then
                Else
                    e.Graphics.DrawLine(Pens.Red, x, 80, x + 90, 40)
                    e.Graphics.DrawString(Form4.TextBoxbranche2.Text, Font, Brushes.Black, 45, 65)
                End If
                If Form4.TextBoxBranche3.Text = "" Then
                Else
                    e.Graphics.DrawLine(Pens.Red, x, 0, x + 90, 40)
                    e.Graphics.DrawString(Form4.TextBoxBranche3.Text, Font, Brushes.Black, 45, 3)
                End If
                x = x + 90
            End While
        End Sub

  2. #2
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Salut

    le picturebox1 est placé dans form4 ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2012
    Messages : 44
    Par défaut
    Non, PictureBox1 est dans une autre Form (Form7)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 141
    Par défaut
    De ce que je comprends, c'est un event "onClick" que tu dois faire, et non une boucle.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Cela me permet normal que ton événement ne soit pas détecté, tu essaye d'intercepter un événement sans rendre la main au gestionnaire d’événement.

  6. #6
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Le problème c'est que l'on ne sait pas quel form connait quel form..

    J'ai fait un test avec un form (Form1) contenant le bouton, les textboxs et qui appelle un nouveau form (Form2) contenant la picturebox:

    Form1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Class Form1
     
        Dim frm2 As Form2
     
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            frm2 = New Form2
            frm2.Show()
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            frm2.UpdatePictureBox(TextBoxBranche1.Text, TextBoxBranche2.Text, TextBoxBranche3.Text)
        End Sub
     
    End Class

    Form2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Public Class Form2
     
        Dim x As Integer = 0
        Dim txt1 As String = ""
        Dim txt2 As String = ""
        Dim txt3 As String = ""
     
        Public Sub UpdatePictureBox(ByVal txt1 As String, ByVal txt2 As String, ByVal txt3 As String)
            Me.txt1 = txt1
            Me.txt2 = txt2
            Me.txt3 = txt3
            PictureBox1.Refresh()
            x = x + 90
        End Sub
     
        Private Sub PictureBox1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
     
            If txt1 <> "" Then
                e.Graphics.DrawLine(Pens.Red, x, 40, x + 90, 40)
                e.Graphics.DrawString(txt1, Font, Brushes.Black, 40, 27)
            End If
     
            If txt2 <> "" Then
                e.Graphics.DrawLine(Pens.Red, x, 80, x + 90, 40)
                e.Graphics.DrawString(txt2, Font, Brushes.Black, 45, 65)
            End If
     
            If txt3 <> "" Then
                e.Graphics.DrawLine(Pens.Red, x, 0, x + 90, 40)
                e.Graphics.DrawString(txt3, Font, Brushes.Black, 45, 3)
            End If
     
        End Sub
     
    End Class

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    c'est surtout que ca n'a pas de sens d'écrire while un event
    après une boucle dans une méthode empeche le rafraichissement de l'interface, il vaut mieux faire du traitement toutes les x millisecondes
    le Form4. c'est étrange aussi

    sur l'event click tu peux démarrer un timer, sur l'event du timer tu fais pctbox.invalidate, ce qui appellera l'event paint, et tu déplaces ton x en variable de classe pour l'incrémenter dans la méthode

    enfin le mieux serait de nous dire ce que tu veux faire, pourquoi et quels sont les conditions
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2012
    Messages : 44
    Par défaut
    Bonjour,

    J'ai réalisé ce programme en suivant l'exemple de N4w4k :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Public Class Form7
     
        Dim x As Integer = -80
        Dim txt1 As String = ""
        Dim txt2 As String = ""
        Dim txt3 As String = ""
     
        Public Sub UpdatePictureBox(ByVal txt1 As String, ByVal txt2 As String, ByVal txt3 As String)
            Me.txt1 = txt1
            Me.txt2 = txt2
            Me.txt3 = txt3
            x = x + 90
            PictureBox1.Refresh()
        End Sub
     
        Private Sub PictureBox1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
     
            If txt1 <> "" Then
                e.Graphics.DrawLine(Pens.Red, x, 40, x + 90, 40)
                e.Graphics.DrawString(txt1, Font, Brushes.Black, 40, 27)
            End If
     
            If txt2 <> "" Then
                e.Graphics.DrawLine(Pens.Red, x, 80, x + 90, 40)
                e.Graphics.DrawString(txt2, Font, Brushes.Black, 45, 65)
            End If
     
            If txt3 <> "" Then
                e.Graphics.DrawLine(Pens.Red, x, 0, x + 90, 40)
                e.Graphics.DrawString(txt3, Font, Brushes.Black, 45, 3)
            End If
     
        End Sub
     
    End Class
     
     
    Public Class Form4
     
    Private Sub ButtonV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonV.Click
            Form7.Show()
        End Sub
     
    Private Sub ButtonP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonP.Click
     
            Form7.UpdatePictureBox(TextBoxbranche1.Text, TextBoxbranche2.Text, TextBoxbranche3.Text)
    End Sub
     
    End Class
    J'ai le même soucis qu'avec le programme que j'avais réalisé.
    En fait, le boutonV me permet de voir les traits tracés.
    Ensuite, en appuyant sur le boutonP, je veux que cela trace les traits puis que à chaque appui sur ce bouton que x devient x+90.

    En ce moment quand je clique sur le boutonP, cela trace bien les traits comme il faut mais lorsque je rappuis sur ce boutton pour tracer d'autres traits à x+90, cela remplace ceux tracé précédemment à l'abcisse x.

    Donc je voudrais que pour un nouvel appui sur le boutonP, que cela trace les traits à x+90 tout en conservant les traits précédents tracés.

    J'espère que j'ai été assez clair.
    Merci
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème du boucle while en PHP
    Par kimpak dans le forum Langage
    Réponses: 6
    Dernier message: 11/08/2011, 13h28
  2. Problème de boucle while dans un popup
    Par drogba72 dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2009, 14h19
  3. [MySQL] Problème sur Boucle While après un LEFT JOIN
    Par matperino dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 28/05/2007, 17h43
  4. [MySQL] Problème de boucle while
    Par Justin_C dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/12/2006, 19h16
  5. [MySQL] Problème de boucle while sur base de données
    Par Darhyl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/05/2006, 15h11

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