在简单的文件操作程序中使用进度条?

Bum*_*mba -1 c#

如何在文件修改程序中使用进度条,每次处理文件时进度条都会增加,当处理完所有文件时它会达到全部值,即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");
Run Code Online (Sandbox Code Playgroud)

但即使在处理完所有文件后,进度条的值仍然不满,我做错了什么?

Dav*_*idG 5

您需要设置ProgressBar.Maximum属性以匹配文件数,然后为循环的每次迭代将值递增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");
Run Code Online (Sandbox Code Playgroud)

  • @Bumba - 如果`//做一些修改'每个文件需要5分钟,你可以选择让用户说"为什么它达到100%但实际上没有完成?" (答案中显示的代码)或"为什么它保持在0%甚至没有开始?" (您对评论的更改).两者都没有明显好于另一个(夸大效果的时间段) (2认同)