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