我有一个程序循环访问文件夹中的文件,在其他地方使用该文件名创建一个新文件夹,然后将一个公共文件放在该文件夹中。冲洗重复,直到我们完成该文件夹中的什么(列在列表框中)。
我觉得我想要看上去并且有进度条。我在概念上理解我为每次迭代增加了一个计数(到listbox.items.count
)..我编码并运行良好。
我也明白DoWork
事件对进度条来说是重要的,我如何让两者进行网格划分?我是否每次迭代都将计数器传递给DoWork
?
我只是错过了从主代码循环到DoEvents计数器的桥梁。
答案 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);
}