C# 在简单的文件操作程序中使用progressbar?

C# 在简单的文件操作程序中使用progressbar?,c#,C#,如何在文件修改程序中使用进度条?在文件修改程序中,进度条在每次处理文件时都会增加,并且在处理所有文件时,进度条都会达到完整值,即100 我试过类似的东西 string files=Directory.GetFiles(path,"*.txt",SearchOption.AllDirectories); foreach (var file in files) { progressBar1.Value=progressBar1.Value+100/(files

如何在文件修改程序中使用进度条?在文件修改程序中,进度条在每次处理文件时都会增加,并且在处理所有文件时,进度条都会达到完整值,即100 我试过类似的东西

string files=Directory.GetFiles(path,"*.txt",SearchOption.AllDirectories);
foreach (var file in files) {
                    progressBar1.Value=progressBar1.Value+100/(files.Length);
                     //Do some modification
}
MessageBox.Show("Done");
但是,即使处理了所有文件,进度条的值仍然未满,我做错了什么?

您需要将属性设置为与文件数匹配,然后为循环的每次迭代将值增加1:

var files = Directory.GetFiles(path,"*.txt",SearchOption.AllDirectories);

progressBar1.Maximum = files.Length;

foreach (var file in files) {
    progressBar1.Value = progressBar1.Value+1;
    //Do some modification
}

MessageBox.Show("Done");

progressBar1.Maximum
属性设置为文件数,每次迭代只需将其增加1即可。@DavidG但文件数可能会有所不同。而不是
files.Length
Thoughmate。顺便说一句,你认为把
progressBar1.Value=progressBar1.Value+1
//进行一些修改之后
是一种更好的方法吗?这不是更好还是更糟,这取决于你在做什么-你需要决定。@Bumba-如果
//对每个文件进行一些修改
需要5分钟,你可以选择让用户说“为什么它达到了100%,但实际上没有完成?”(答案中显示的代码)或者“为什么它保持在0%甚至还没有开始?”(您在评论中的更改)。两者都不明显优于另一个(时间段因效果而被夸大)