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 :

Afficher valeurs dans label via boucle


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    autodidacte
    Inscrit en
    Décembre 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Afficher valeurs dans label via boucle
    hello tout le monde ,
    je coince sur l'affichage d'une valeur dans un label
    je m'explique ,
    je suis dans une boucle while et dedans j'ai une progressbar , dont je veux aussi afficher le pourcentage d'avancement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
               Label7.Text = ProgressBar1.Value & " %"
    dans cette partie j'ai l'impression que les calculs sont trop rapides pour que ça se voit dans le label , malgré qu'il met un peu de temps à faire la boucle il affiche rien pdt les calculs.
    j'ai seulement le 100% affiché une fois la boucle terminée.
    j'ai mis un point d’arrêt sur cette ligne et pourtant je vois bien l’évolution de la valeur à chaque cycle.

    des idées ?

  2. #2
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    Salut Propi,

    Pour être succin, tu utilises le thread principal qui gère l'affichage de ton application pour effectuer un traitement.
    De ce fait lorsque ton traitement est executé, ton programme ne libère pas de temps pour la mise à jour de l'affichage. C'est une fois seulement que ton traitement est terminé que l'affichage se met à jour (d'où le 100%).
    Il faut que tu executes ton traitement en arrière plan. Fais une recherche sur BackgroundWorker pour te permettre de réaliser ton traitement en arrière plan.

    Cordialement,

  3. #3
    Membre à l'essai
    Homme Profil pro
    autodidacte
    Inscrit en
    Décembre 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    très bien , je vais regarder ça , et merci pour l'info
    cordialement.

  4. #4
    Membre à l'essai
    Homme Profil pro
    autodidacte
    Inscrit en
    Décembre 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Hum ,
    du coup j'ai regardé un peu comment fonctionnait backgroundworker en faisant des essaies j'arrive à le faire fonctionner correctement dans son propre formulaire form1 .

    Cependant lorsqu'il s'agit d'utiliser deux formulaires ça se complique.

    grosso modo j'ai besoin de variable issue d'un form2 que je vais exploiter ds le form1 pour des calculs

    exemple dans le form1 ( Form2.RichTextBox.TextLength ) que j'utilise dans une boucle et dans un BackgroundWorker ça prend la valeur 0 à chaque fois .
    sans le backgroundworker ça fonctionne.

    j'ai essayé de déclarer Form2.RichTextBox.TextLength en variable globale dans le form1 c'est pareil =/ et je précise que j'ai besoin de plusieurs variables du formulaire2


    je sais pas si je m'explique clairement

  5. #5
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    Bonsoir Propi,

    Je ne penses pas pouvoir t'aider sans voir ton code, cela semble un peu confus.

    Peux tu fournir le code de ton backgroundworker ainsi que la déclaration des champs que tu veux utiliser?

    Si c'est plus simple pour toi, envois le en message privé.

  6. #6
    Membre à l'essai
    Homme Profil pro
    autodidacte
    Inscrit en
    Décembre 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    voila la code
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    Public Class REMPLACER1
     
     
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Form1.RichTextBox1.Text = Form1.RichTextBox1.Text.Replace(TextBox1.Text, TextBox2.Text)
     
        End Sub
     
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     
     
            BackgroundWorker1.RunWorkerAsync()
     
     
     
            If TextBox3.Text = "" Then
                MsgBox(" Inscrivez au moins un caractère ")
                Exit Sub
            End If
     
     
            Form1.RichTextBox1.Text = Form1.RichTextBox1.Text.ToLower
     
     
        End Sub
     
     
     
        Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
     
     Dim index As Integer = 0
     
            While (index < Form1.RichTextBox1.Text.LastIndexOf(TextBox3.Text))
     
     
                Form1.RichTextBox1.Find(TextBox3.Text, index, Form1.RichTextBox1.TextLength, RichTextBoxFinds.None)
     
     
                Form1.RichTextBox1.SelectionBackColor = Color.GreenYellow
     
     
                index = Form1.RichTextBox1.Text.IndexOf(TextBox3.Text, index) + 1
     
     
                If ProgressBar1.Value >= 100 Then
                    ProgressBar1.Value = 0
     
                End If
     
     
                ProgressBar1.Value = index / (Form1.RichTextBox1.TextLength / 100)
     
              Label7.Text = ProgressBar1.Value & " %"
     
                System.Threading.Thread.Sleep(5)
     
                Label7.Refresh()
     
     
     
                  End While
     
     
     
        End Sub
     
     
     
        Private Sub REMPLACER1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Control.CheckForIllegalCrossThreadCalls = False
        End Sub
     
     
    End Class
    il s'agit d'une petite fenêtre dans laquelle je vais traiter un texte placé dans une autre fenêtre , le code est un peu brouillon à cause des multiples essaies.
    et le pb est que ce qui est traité dans le backgroundworker toutes les variables sont à 0 alors que si c'est traité hors background les variables fonctionnent.

Discussions similaires

  1. [AC-2003] Etat-Afficher valeur dans un control indéxé
    Par Maxym63 dans le forum IHM
    Réponses: 3
    Dernier message: 30/04/2009, 13h24
  2. Afficher valeur dans jsp
    Par yasinfo dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 17/04/2009, 16h09
  3. [DOM] Passage de valeur dans input via getElementById().value
    Par Invité dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/07/2008, 21h47
  4. Réponses: 3
    Dernier message: 27/03/2008, 11h53
  5. afficher variable dans Label
    Par Agrapheuse dans le forum NetBeans
    Réponses: 2
    Dernier message: 01/03/2008, 15h50

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