我正在编写一个用于上传和下载文件的C#应用程序。下载使用WebClient对象及其DownloadAsycDownload
方法。下载适用于多个文件。它下载尽可能多的文件,我想要的。C#多个进度条用于多个文件下载
我的问题是我无法显示所有文件在不同进度条上的动态添加到窗体的flowlayout control
的进度。
这里是我的代码:
public ProgressBar[] bar;
public int countBar=0;
...
bar[countBar] = new ProgressBar();
flowLayoutPanel1.Controls.Add(bar[countBar]);
countBar++;
request.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownoadInProgress);
request.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);
request.DownloadFileAsync(new Uri(this.uri), localPath);
byte[] fileData = request.DownloadData(this.uri);
FileStream file = File.Create(localPath);
file.Write(fileData, 0, fileData.Length);
file.Close();
}
public void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
flowLayoutPanel1.Controls.Remove(bar[countBar]);
countBar--;
MessageBox.Show("Download Completed");
}
public void DownoadInProgress(object sender, DownloadProgressChangedEventArgs e)
{
bar[countBar].Maximum = total_bytes;
bar[countBar].Value = (int)e.BytesReceived;
}
谢谢,这真的很有帮助。 – Habtamu 2013-05-02 12:10:38
如果这完全帮助你,请将其标记为已接受的答案。否则,让我知道缺少的东西。 – SimpleVar 2013-05-02 13:55:44
我想从另一个类中添加组件。在运行时无法将进度条添加到表单中。我发布的这些方法在另一个类中。 – Habtamu 2013-05-02 14:41:03