当步骤任意时更新进度条
本文关键字:更新 任意时 | 更新日期: 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++;
}
就是这样!