C# 进度条 - 无法绕过它

C# Progress bar - can't wrap my head around it

我有一个程序可以循环访问一个文件夹中的文件,在别处使用该文件名创建一个新文件夹,然后将一个通用文件放入该文件夹中。冲洗重复,直到我们完成该文件夹中的内容(列在列表框中)。

我决定要花哨,有进度条。我在概念上理解我将每次迭代的计数增加一个(到 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);
        }