C#进度条 – 无法绕过它

我有一个程序,它循环文件夹中的文件,在其他地方使用该文件名创建一个新文件夹,然后将一个公共文件放在该文件夹中。 冲洗重复,直到我们完成该文件夹中的什么(列在列表框中)。

我觉得我想要看上去并且有进度条。 我在概念上理解我为每次迭代增加了一个计数(到listbox.items.count )..我编码并运行良好。

我也明白DoWork事件对于进度条来说是重要的,我如何让两者进行网格划分? 我是否每次迭代都会将计数器传递给DoWork

我只是错过了从主代码循环到DoEvents计数器的桥梁。

使用背景工程如下所示:

  BackgroundWorker worker = new BackgroundWorker(); worker.WorkerReportsProgress = true; worker.DoWork += new DoWorkEventHandler(update_DoWork); worker.ProgressChanged += new ProgressChangedEventHandler(update_ProgressChanged); worker.RunWorkerAsync(); 

您需要一个ProgressChangedEventHandler。 然后,当您想要更新进度条时,您将需要使用ReportProgress(这将在DoWork方法中)。 此方法将调用ProgressChangedEventHandler。

 int percentProgress = 10; worker.ReportProgress(percentProgress) 

ProgressChangedEventHandler的示例:

  private void update_ProgressChanged(object sender, ProgressChangedEventArgs e) { progressBar.Value = (e.ProgressPercentage); }