[英]Progress bar stuck c#
我想在表單中制作進度條,但是當我運行它時,進度條卡住了並且沒有移動到盡頭,它甚至沒有停下來。
有什么辦法嗎?
謝謝。
這是代碼:
private void WelcomeScreen_Load(object sender, EventArgs e)
{
progressBar1.Minimum = 0;
progressBar1.Maximum = 100;
progressBar1.Step = 5;
progressBar1.PerformStep();
}
進度條卡住了,因為您只調用一次PerformStep
。 當您調用PerformStep
,進度條的值將增加5(因為您將其設置為5)。
為了使進度條移動更多,您必須更頻繁地調用PerformStep
。
例如,如果您有一個在后台運行的后台工作線程,則希望通知用戶該工作需要多長時間。 每當您想顯示進度已經完成時,都可以調用PerformStep
。
樣例代碼:
...
progressBar1.Step = 5;
InitTheWork();
progressBar1.PerformStep(); //This increments the pb's value by 5, since property `Step` has been set to 5
DoSomeHeavyWork();
progressBar1.Value += 20; //This increments pb's value by 20
FinalizeWork();
progressBar1.Value = 100; //This fully fills up the progress bar, to signify that the work has been completed.
由於您沒有改變它的價值,它被卡住了。 要使其不粘滯,請更改其值。
進度條本身不會“移動”。 每次要更改時,都必須調用PerformStep()。 使用當前代碼,調用PerformStep()20次應使其看起來已完成。 您必須自己確定在資源繁忙的過程中的哪些時刻更新進度條是明智的。 它可能看起來像這樣:
PerformTask1();
progressBar1.PerformStep();
PerformTask2();
progressBar1.PerformStep();
PerformTask3();
progressBar1.PerformStep();
...
您可能想要做很長時間的事情,並且要求您在另一個線程(而不是Welcome_Screen_Load線程)上顯示該進度條(如果該線程正在處理用戶輸入和GUI更新),以免您的加載屏幕可能沒有響應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.