ProgressBar десятичное значение

1

У меня есть цикл. количество итераций зависит от выбора пользователя. Я получаю число double, но индикатор выполнения принимает только int;

double progr = 100 / (listBox2.Items.Count * listBox4.Items.Count);
progressBar1.Value += progr; <-
Теги:
winforms

2 ответа

5
Лучший ответ

если вы хотите использовать панель прогресса, чтобы отображать обработку элементов TotalCount_n, вы обычно используете эти инструкции:

progressBar1.Maximum = TotalCount_n;
progressBar1.Value = currentItem;

если у вас есть два процесса, например TotalCount_n и TotalCount_m, вы можете написать

progressBar1.Maximum = TotalCount_n * TotalCount_m;
progressBar1.Value = currentItem_n * TotalCount_m + currentItem_m;

если вы хотите рассчитать процент с помощью int, вы можете написать:

int percentage = (currentItem * 100) / TotalCount_n;

если у вас есть панель процессов, показывающая проценты, то вы используете

//progressBar1.Maximum = 100; // set in the designer
progressBar1.Value = (currentItem * 100) / TotalCount_n;

если у вас есть панель обработки со случайным максимумом, вы также можете написать:

progressBar1.Value = (currentItem * progressBar1.Maximum) / TotalCount_n;

но тогда вам нужно позаботиться о том, чтобы цифры не стали слишком высокими. так что если TotalCount_n и максимум превышают 65000, вы получите переполнение, потому что продукт currentItem * progressBar1.Maximum может превысить 2 ^ 32.

1
double progr = 100 / (listBox2.Items.Count * listBox4.Items.Count);
progressBar1.Value += progr; 

Проблемы, обнаруженные в этих двух строках:

  1. Возможное деление на ноль
  2. Целочисленное деление и присвоение double
  3. Присвоение свойства double integer
  4. Использование инкремента вместо присвоения Value
  5. Неправильное деление для определения прогресса (операнды меняются местами)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню