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);
}
我有一个程序可以循环访问一个文件夹中的文件,在别处使用该文件名创建一个新文件夹,然后将一个通用文件放入该文件夹中。冲洗重复,直到我们完成该文件夹中的内容(列在列表框中)。
我决定要花哨,有进度条。我在概念上理解我将每次迭代的计数增加一个(到 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);
}