2017-06-13 104 views
-1

我想要一個進度條來顯示要執行的方法的百分比。正在執行的方法是ms測試。當用戶點擊按鈕ms test 執行,我想要一個進度條顯示。 ms測試是所選工作流程的列表。我有一種方法可以獲得選定工作流程的列表 - 如果 進度條顯示選擇工作流程列表的百分比。C#winforms進度條

目前我有一個進度條,顯示05只是一秒鐘,然後顯示一個流動的綠色酒吧。這是我有運行MS測試按鈕

RunTestsProgressBar.Refresh(); 
     int percent = (int)(((double)RunTestsProgressBar.Value/(double)RunTestsProgressBar.Maximum) * 100); 
     RunTestsProgressBar.CreateGraphics().DrawString(percent.ToString() + "%", new Font("Arial", (float)8.25, FontStyle.Regular), Brushes.Black, new PointF(RunTestsProgressBar.Width/2 - 10, RunTestsProgressBar.Height/2 - 7)); 
+0

你打算在另一個線程上工作嗎?否則,隨着您的方法逐步完成,您的進度欄將不會在UI中更新。 –

+0

該方法已經在後臺線程上工作了。我爲進度條使用了另一個線程? – Julie

+0

您只能修改主(UI)線程上的UI。您必須從後臺線程調用主線程中的方法。 –

回答

1

當我不得不做這樣的事情在過去我通常使用一個BackgroundWorker的,並利用其ReportProgress()方法,火災的原因代碼UI線程上的ProgressChanged事件。

我認爲這是去這樣做的事情,如果你知道你要多少測試瓶坯和可撥打的UpdateProgress每個測試完成後的好辦法。

這裏是一個很好的易於遵循的例子的鏈接。

Dot NET Perls - ProgressBar w/ BackgroundWorker

+0

我試過這個,但我遇到了同樣的問題 – Julie

+1

聽起來好像你正在將** ProgressBar **的_ ** Style ** _屬性設置爲_Marquee_。嘗試將其設置爲_Block_或_Continuous_。 – user3583535