Как определить шаги приращения для Progressbar в .NET? - PullRequest
0 голосов
/ 11 сентября 2009

Это кажется тривиальным, но я не могу найти чистый алгоритм для этого.

Я могу рассчитать общее количество строк до 2186.

Тогда я подумал, что я делаю 2186/100 = 21 (что будет моим modNr) Тогда я подумал, что я буду увеличивать currentRowNr ++ внутри Backgroundworker.reportprocess () И выполните шаг прогресса if (currentRowNr% modNr == 0).

Похоже, что индикатор выполнения теперь работает правильно, но он не останавливается на 100. Я ожидаю, что число превысило максимальное значение 100. Мой алгоритм кажется неправильным.

Для этого должно быть чистое решение, и я просто усложняю его. Кто-нибудь хорош в математике? ; -)

Спасибо

Ответы [ 2 ]

3 голосов
/ 11 сентября 2009

Установите для свойства Maximum на progessbar значение 2186, а для свойства Minimum - 0. Теперь каждый раз, когда вы проходите один элемент обработки, вы увеличиваете значение индикатора выполнения на 1. Удаляет необходимость в алгоритме вообще, так как Progessbar позаботится об этом за вас.

1 голос
/ 11 сентября 2009

Понятно: 2121 = 101 * 21, а 2142, 2163, 2184 также будут> 100

Это простая задача округления.
Если вы используете 2186/100 + 1 = 22 в качестве modNr, вы получите 99 при последнем попадании. Для сверхточности следуйте ответу Qua и перенастройте индикатор выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...