我正在编写一个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%。我该怎么做才能正确?
答案 0 :(得分:5)
我假设您正在使用System.Windows.Forms.ProgressBar。
只需将Maximum字段的值设置为行数,而不是尝试计算进度百分比。然后,您可以将值设置为您所在的行号,并自动将其转换为合适的百分比。
// 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);
答案 1 :(得分:2)
假设您正在使用WinForms应用程序
为什么你在这里使用100?
ProgressBar有一个Maximum属性,您可以将其设置为总分数
e.g。
ProgressBar1.Maximum = myFileList.Count;
然后在循环中你可以像这样做一个技巧
ProgressBar1.value =0;
for(int i=0;i<myFileList.Count;i++){
//your code here
ProgressBar1.value++;
}
就是这样!
答案 2 :(得分:1)
将progress
定义为double
并更改代码:
double steps = 100d/myFileList.Count;
progress += steps;
updateProgressBar ((int) progress );