我想在我的表单中创建进度条,但是当我运行它时,进度条卡住并且没有移动到最后,它甚至停止了一半。
任何解决方案?
谢谢。
以下是代码:
private void WelcomeScreen_Load(object sender, EventArgs e)
{
progressBar1.Minimum = 0;
progressBar1.Maximum = 100;
progressBar1.Step = 5;
progressBar1.PerformStep();
}
答案 0 :(得分:0)
进度条卡住,因为您只拨打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.
答案 1 :(得分:-1)
因为你没有改变它的价值而被卡住了。为了让它不变,改变它的价值。
答案 2 :(得分:-1)
进度条不会自动“移动”。每次想要更改时,都必须调用PerformStep()。使用当前代码,调用PerformStep()20次应该使它看起来完成。您必须自己了解资源密集型流程中的哪些点,更新进度条是明智的。它可能看起来像这样:
PerformTask1();
progressBar1.PerformStep();
PerformTask2();
progressBar1.PerformStep();
PerformTask3();
progressBar1.PerformStep();
...
你可能想要做任何需要花费很长时间的事情并且要求你在调用Welcome_Screen_Load的另一个线程中显示进度条,如果这是处理用户输入和GUI更新的相同线程,以免加载屏幕可能看起来没有反应。