2015-11-19 50 views
0

我有一個方法名稱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()); 
    } 
+0

哈哈!在發佈問題後的30秒內下降。典型的StackOverflow。 –

+0

請參閱http://stackoverflow.com/questions/2465040/using-lambda-expressions-for-event-handlers。您可以捕獲lambda中的進度條UI元素 – pm100

+0

@ pm100如果OP不想使用lambda表達式,則可能不太理想。 –

回答

0

爲什麼不使用Dictionary<WebClient, ProgressBar>

創建WebClient時,請將字典中的WebClient字段指定爲相關的ProgressBar。然後,您可以通過將sender轉換爲WebClient並在字典中進行查找來檢索DownloadProgressChanged方法中的ProgressBar