进度条卡住c#

时间:2013-12-22 18:21:51

标签: c# winforms progress-bar

我想在我的表单中创建进度条,但是当我运行它时,进度条卡住并且没有移动到最后,它甚至停止了一半。

任何解决方案?

谢谢。

以下是代码:

private void WelcomeScreen_Load(object sender, EventArgs e)
        {
            progressBar1.Minimum = 0;
            progressBar1.Maximum = 100;
            progressBar1.Step = 5;
            progressBar1.PerformStep();
        }

3 个答案:

答案 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更新的相同线程,以免加载屏幕可能看起来没有反应。