2009-09-11 6 views
0

Cela semble trivial, mais je ne peux pas trouver un algorithme propre à cela.Comment déterminer les étapes d'incrément pour une barre de progression dans .NET?

Je peux calculer mes lignes au total à 2186.

Je pensais que je fais 2186/100 = 21 (ce qui serait mon modNr) Alors je pensais que j'incrémenter le currentRowNr ++ l'intérieur Backgroundworker.reportprocess() Et faites une barre de progression if (currentRowNr% modNr == 0). La barre de progression semble maintenant se comporter correctement cependant, elle ne s'arrête pas à 100. Je m'attends à ce que le nombre dépasse 100. Mon algorithme semble faux.

Il doit y avoir une solution propre pour cela et je suis juste en train de le rendre trop compliqué. Quelqu'un de bien en maths? ;-)

Merci

Répondre

3

Définissez la propriété maximum de la progessbar à 2186 et la propriété minimum à 0. Maintenant, chaque fois que vous avez passé un seul élément dans votre traitement, vous augmentez la valeur de la barre de progression par 1. Supprime le besoin d'un algorithme car le progessbar s'en chargera pour vous.

+0

En fait, je pense que c'est un algorithme –

+0

Pas vraiment, vous profitez simplement du fait que le progessbar est déjà livré avec un algorithme pour résoudre le problème. Je suppose que vous pourriez cependant appeler un ensemble d'instructions pour un algorithme. –

1

Il est clair: 2121 = 101 * 21, et 2142, 2163, 2184 sera également> 100

Il est un problème d'arrondi simple.
Si vous utilisez 2186/100 + 1 = 22 comme modNr vous finirez avec 99 sur le dernier hit. Pour l'ultra précision, suivez la réponse de Qua et reconfigurez la barre de progression.

Questions connexes