当步骤任意时更新进度条

本文关键字:更新 任意时 | 更新日期: 2023-09-27 18:31:51

我正在编写一个C#应用程序,在其中处理文件中的行。该文件可能有 2 行,30、80,可能超过一百行。

这些行存储在一个列表中,因此我可以从myFileList.Count获取行数。进度条仅将int作为值的参数,因此如果我的行号为 50,我可以轻松地做到

int steps = 100/myFileList.Count 
progress += steps; 
updateProgressBar ( progress );

但是,如果我的文件有 61 行:100/61 = 1,64,因此int steps将等于 1,我的进度条将停止在 61% 怎么办。我怎样才能正确地做到这一点?

当步骤任意时更新进度条

在这里,我假设您使用的是System.Windows.Forms.ProgressBar。

无需尝试计算进度百分比,只需将"最大值"字段的值设置为行数即可。然后,您可以将该值设置为您所在的行号,它会自动将其转换为合适的百分比。

// At some point when you start your computation:
pBar.Maximum = myFileList.Count;
// Whenever you want to update the progress:
pBar.Value = progress;
// Alternatively you can increment the progress by the number of lines processed
// since last update:
pBar.Increment(dLines);

progress定义为double并更改代码:

double steps = 100d/myFileList.Count;
progress += steps; 
updateProgressBar ((int) progress );

假设您正在处理 WinForms 应用程序

你为什么在这里使用 100 ?

进度条有一个 Max 属性,您可以将其设置为总隔分数

例如

ProgressBar1.Maximum = myFileList.Count;

之后在循环中你可以做这样的技巧

ProgressBar1.value =0;
for(int i=0;i<myFileList.Count;i++){
 //your code here
 ProgressBar1.value++;
}

就是这样!