ProgressBar retardée par rapport à la réalité.

Signaler
Messages postés
30
Date d'inscription
jeudi 7 juillet 2011
Statut
Membre
Dernière intervention
8 septembre 2014
-
Messages postés
30
Date d'inscription
jeudi 7 juillet 2011
Statut
Membre
Dernière intervention
8 septembre 2014
-
Bonjour à toutes et à tous, je suis actuellement confronté à un petit problème assez bénin, j'ai une ProgressBar et un Label, le but est de charger cette ProgressBar pour qu'elle atteigne 100% et afficher la valeur en temps réel sur le Label, cependant j'ai remarqué un léger retard (environ 10%) entre le début du chargement de la ProgressBar et sa vraie valeur, qui, dès qu'elle commence, en réalité elle est déjà à 10% ou à 20% je ne sais pas trop. Ce qui fait que lorsque j'arrive à 100% de sa vraie valeur et que je souhaite par exemple ouvrir un second formulaire à cette échéance, et bien la ProgressBar n'est pas arrivée à son terme (tout n'est pas "vert") et c'est moche. Peut-être est-ce un problème déjà rencontré sur ce forum, je n'ai pas trouvé de solution, merci beaucoup à celui qui apportera son aide.

PS : J'ai un Timer dont l'intervalle est à 100ms et j'incrémente la ProgressBar de 1 en 1. Merci. :)
A voir également:

9 réponses

Messages postés
14776
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2020
435
Bonjour,

Si tu veux que ta barre corresponde pile poile à ton processus il faut que ce soit ce processus qui incrémente la barre et non un timer à côté.

Si ça n'est pas réalisable, tu peux à la fin du processus mettre la barre à 100%.
Messages postés
30
Date d'inscription
jeudi 7 juillet 2011
Statut
Membre
Dernière intervention
8 septembre 2014
1
Bonjour Whismeril et merci de ta réponse.

Comment puis-je faire pour que ce soit le processus qui incrémente la ProgressBar au lieu du Timer ? C'est vrai que je n'avais pas songé à cela. Je ne sais pas si ça me sera utile en fin de compte étant donné que mon appli se charge comme un éclair, on verra rien, mais j'ai bien envie d'essayer quand-même.
Messages postés
111
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
10 septembre 2019
3
montre tes codes, j'ai déjà réalisé un trucpareil
Messages postés
111
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
10 septembre 2019
3
as-tu quelques choses pareil???
 private void IncreaseProgressBar(object sender, EventArgs e)
{
progressBar1.Increment(1);
ton_label.Text = progressBar1.Value.ToString() + "% Terminé";
if (progressBar1.Value == progressBar1.Maximum)
{
// form.......
}


Soyons Toujours à la disposition des autres (si la personne à bien posée son problem)
Messages postés
30
Date d'inscription
jeudi 7 juillet 2011
Statut
Membre
Dernière intervention
8 septembre 2014
1
Bonjour,

J'ai juste ceci avec le Timer :

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            progressBar1.Increment(1);
            if (progressBar1.Value == 100)
            {
                timer1.Stop();
            }
            label1.Text = progressBar1.Value + " %";
        }
Messages postés
111
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
10 septembre 2019
3
Modifier selon tes besoins stp et d'autres sont facultatifs

 private void button1_Click(object sender, EventArgs e)
{
progressBar1.Visible = true;
progressBar1.Minimum = 1;
progressBar1.Maximum = 100;
progressBar1.Value = 1;
Timer TM = new Timer();
//TM.Interval = 255;
TM.Tick += new EventHandler(IncreaseProgressBar);
TM.Start();
}

private void IncreaseProgressBar(object sender, EventArgs e)
{
progressBar1.Increment(1);
Lon_label.Text = progressBar1.Value.ToString() + "% Terminé";
if (progressBar1.Value == progressBar1.Maximum)
{
//Timer TM = new Timer();
TM.Stop();
}
}

Messages postés
30
Date d'inscription
jeudi 7 juillet 2011
Statut
Membre
Dernière intervention
8 septembre 2014
1
Merci, j'ai essayé, cependant j'ai toujours le même résultat, au Label quand j'ai "100% Terminé", la ProgressBar n'est pas encore achevée (toute verte je veux dire).
Messages postés
30
Date d'inscription
jeudi 7 juillet 2011
Statut
Membre
Dernière intervention
8 septembre 2014
1
Bonsoir, est-ce que tout ce code est censé m'aider ? Je suis pas un véritable programmeur, je ne comprend pas tout, est-ce que ce code me permet de synchroniser le pourcentage de mon label au niveau de la progressbar ? Car là je vois les opérations de base...

Merci.
non c'est un code perso , comment j'utilise progressbar
déclaration
progressBar1.Minimum = 1;
progressBar1.Maximum = 500000;
progressBar1.Value = 1;
progressBar1.Step = 1;

dans la boucle while:
progressBar1.PerformStep();

et en fait ,je suis pas vraiment dans l'informatique , je m occupe les idées , désoler pour la syntaxe ,pas plus voila si tu connais pas:
http://msdn.microsoft.com/fr-fr/library/system.windows.forms.progressbar.value%28v=vs.110%29.aspx
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
8
Bonjour,
je te conseille de mettre ton action dans une tâche de fond (Backgroundworker) qui comporte qui procédure ReportPorgress . Après avoir attaché une procédure qui contient la mise à jour de la progressbar à BackgroundWorker.ProgressChanged cela devrait être plus réaliste.
Tu trouveras un exemple à cette adresse http://www.dotnetperls.com/progressbar.
Bon codage
Messages postés
14776
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2020
435
Bonjour louis, tu as englobé le point dans ton url et du coup ça ne marche pas, peux tu modifier?
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
8
Messages postés
14776
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2020
435
Une petite remarque, constructive, tu diriges souvent les demandeurs vers des exemples ou tutos tout à fait appropriés mais en anglais.
Il se peut que nos demandeurs viennent sur un site francophone par ce qu'il ne maitrisent pas l'anglais.
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
8
OK je vais en tenir compte.
Mais on trouve plus souvent la solution sur ces sites.
Le code étant international.
Merci
Messages postés
30
Date d'inscription
jeudi 7 juillet 2011
Statut
Membre
Dernière intervention
8 septembre 2014
1
Bonjour, merci pour vos aides à tous, j'essaye ça sous peu. Merci.