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

1ModdingMaster Messages postés 30 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 8 septembre 2014 - Modifié par 1ModdingMaster le 12/02/2014 à 19:27
1ModdingMaster Messages postés 30 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 8 septembre 2014 - 19 févr. 2014 à 11:48
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. :)

9 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
14 févr. 2014 à 06:46
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%.
0
1ModdingMaster Messages postés 30 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 8 septembre 2014 1
14 févr. 2014 à 11:37
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.
0
remiki90 Messages postés 132 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 27 décembre 2021 3
14 févr. 2014 à 11:38
montre tes codes, j'ai déjà réalisé un trucpareil
0
remiki90 Messages postés 132 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 27 décembre 2021 3
Modifié par MINDONGO le 14/02/2014 à 12:13
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
1ModdingMaster Messages postés 30 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 8 septembre 2014 1
14 févr. 2014 à 12:58
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 + " %";
        }
0
remiki90 Messages postés 132 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 27 décembre 2021 3
14 févr. 2014 à 13:06
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();
}
}

0
1ModdingMaster Messages postés 30 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 8 septembre 2014 1
14 févr. 2014 à 16:43
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).
0
1ModdingMaster Messages postés 30 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 8 septembre 2014 1
16 févr. 2014 à 22:30
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.
0
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
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
18 févr. 2014 à 09:00
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
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
18 févr. 2014 à 12:03
Bonjour louis, tu as englobé le point dans ton url et du coup ça ne marche pas, peux tu modifier?
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
18 févr. 2014 à 14:48
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
18 févr. 2014 à 17:23
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.
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
18 févr. 2014 à 17:25
OK je vais en tenir compte.
Mais on trouve plus souvent la solution sur ces sites.
Le code étant international.
Merci
0
1ModdingMaster Messages postés 30 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 8 septembre 2014 1
19 févr. 2014 à 11:48
Bonjour, merci pour vos aides à tous, j'essaye ça sous peu. Merci.
0
Rejoignez-nous