ProgressBar十进制值

时间:2014-05-23 06:38:24

标签: c# .net winforms

我有一个周期。迭代次数取决于用户的选择。我得到double的数量,但进度条只接受int;

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

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

在这两行中检测到的问题:

  1. 可能除以零
  2. 整数划分并转让给double
  3. double分配给整数属性
  4. 使用增量而非分配到Value
  5. 确定进度的错误分割(操作数被交换)