C#进度条 - 无法绕过它

时间:2015-07-02 18:03:59

标签: c# progress-bar

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

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

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

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

1 个答案:

答案 0 :(得分:1)

使用背景工程如下所示:

 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);
        }