У меня есть цикл. количество итераций зависит от выбора пользователя. Я получаю число double, но индикатор выполнения принимает только int;
double progr = 100 / (listBox2.Items.Count * listBox4.Items.Count);
progressBar1.Value += progr; <-
если вы хотите использовать панель прогресса, чтобы отображать обработку элементов 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.
double progr = 100 / (listBox2.Items.Count * listBox4.Items.Count);
progressBar1.Value += progr;
Проблемы, обнаруженные в этих двух строках:
double
double
integerValue