将进度条作为参数传递?

时间:2015-11-19 23:44:58

标签: c#

我有一个方法名称DownloadProgressChanged。我的程序将能够下载多个东西,因此它将有不同的进度条。 DownloadProgressChanged的问题在于,我不确定如何根据正在下载的内容使用不同的进度条。所以基本上我想知道在调用方法时是否可以将progressBar名称作为参数传递。 (如果下载其他东西,progressBar2将激活而不是progressBar1)。我的代码如下。

WebClient wc = new WebClient();
        wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressChanged);
        wc.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);


void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
        double bytesIn = double.Parse(e.BytesReceived.ToString());
        double totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
        double percentage = bytesIn / totalBytes * 100;
        progressBar1.Value = int.Parse(Math.Truncate(percentage).ToString());
    }

1 个答案:

答案 0 :(得分:0)

为什么不使用Dictionary<WebClient, ProgressBar>

创建WebClient时,请将字典的WebClient字段指定为相关的ProgressBar。然后,您可以通过将ProgressBar转换为DownloadProgressChanged并在字典中进行查找,在sender方法中检索此WebClient