【发布时间】:2017-09-04 11:53:12
【问题描述】:
如果用户选中了该文件夹的复选框,我有下面的代码可以将一些文件夹复制到不同的位置。
我有一个后台工作人员和一个进度条。我看到这个网站甚至 MSDN 上的人都给出了同样的例子来更新进度条
for (int i = 0; i <= 100; i++)
{
// Report progress to 'UI' thread
backgroundWorker1.ReportProgress(i);
// Simulate long task
System.Threading.Thread.Sleep(100);
}
这一切都很好,我知道它是如何工作的。但是我想不通的是实现我的复选框并在选中时复制文件夹,然后根据我拥有的复选框更新进度条。我计算了复选框并将其分配给 prgbarmax。
这是我目前所拥有的:
private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
for (int i = 0; i < prgbarmax; i++)
{
int step = (i / prgbarmax) * 100;
if (test1)
{
//do the copy here
backgroundWorker1.ReportProgress(i);
}
if (tes2)
{
//do the copy here
backgroundWorker1.ReportProgress(i);
}
if (test3)
{
//do the copy here
backgroundWorker1.ReportProgress(i);
}
.... so on
}
}
【问题讨论】:
-
您使用的是 WPF 还是 Windows 窗体?
-
您需要构造一个要复制的文件夹列表,并且在for循环的每次迭代中只复制一个文件夹。您的代码的问题是您试图在一次迭代中复制所有文件夹。
-
@kennyzx 我对 C# 非常陌生,并尝试在编写代码时学习。你能给我一个代码示例吗?
-
@Transcendent 抱歉.. 我现在添加到问题中。我正在使用 Win Forms
标签: c# winforms progress-bar backgroundworker