0

我正在编写一个 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%。我怎样才能正确地做到这一点?

4

3 回答 3

5

在这里,我假设您使用的是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);
于 2013-09-19T08:53:24.573 回答
2

假设您正在使用 WinForms 应用程序

你为什么在这里使用 100 ?

ProgressBar 有一个Maximum 属性,您可以将其设置为total septs

例如

ProgressBar1.Maximum = myFileList.Count;

然后在循环中你可以做一个这样的把戏

ProgressBar1.value =0;
for(int i=0;i<myFileList.Count;i++){

 //your code here

 ProgressBar1.value++;
}

而已 !

于 2013-09-19T08:58:59.017 回答
1

定义progressdouble并更改代码:

double steps = 100d/myFileList.Count;
progress += steps; 
updateProgressBar ((int) progress );
于 2013-09-19T08:52:08.737 回答