我正在試圖用動畫做簡單的數據傳輸到數據庫。我成功激活了進度條,但我的百分比標籤沒有改變價值和動畫。 我的代碼如下:在foreach循環中標籤元素的改變和動畫
pBar.Maximum = query.Count(); //pBar is progress bar
foreach (var cell in query)
{
pBar.Value++;
lblYuzde.Text = "%" + (pBar.Value/pBar.Maximum) * 100; //lblYuzde is label
Application.DoEvents();
//Do events
}
進度條是好與animaton工作,但標籤不會改變。我的錯誤是什麼?
,什麼樣的價值是'lblYuzde.Text'傳遞時,在第一次迭代這條線。 'lblYuzde.Text =「%」+(pBar.Value/pBar.Maximum)* 100;如果您想要表示Text屬性中的值,則需要將整數值轉換爲字符串。使用調試器,你將很容易解決這個簡單的錯誤。也不要嘗試使用'Application.DoEvents()',你可能使用'BackgroundWorker'獲得更好的結果,這裏也有大量的例子。 – MethodMan
您發佈的代碼應該會導致您的標籤直接進入%100。你沒有什麼可以放慢速度來實際顯示任何處理。建議避免使用Application.DoEvents並使用BackgroundWorker。 – LarsTech
@MethodMan我相信這會起作用,''string'+ 12'產生''string12'''。這裏的問題似乎是整數除法:由於「pBar.Value」總是小於「pBar.Maximum」,因此除法總是爲「0」。正確的方法是'「%」+(100 * pBar.Value/pBar.Maximum)'。無論如何,在循環中執行此操作並調用'Application.DoEvents'是一種不好的方法。考慮使用計時器或異步方法。 –