WinForms中的进度条

时间:2009-04-16 16:26:52

标签: c# .net winforms

我需要在2个表单之间插入一个进度条,当我点击一个按钮打开一个窗口时我有一个主表单我需要等待才能加载最后一个窗口('cos有很多图片要下载到最后一个一个表格)我决定使用进度条显示打开所请求窗口的剩余时间。 现在我不知道如何在代码中实现这个功能(这是我第一次使用进度条)。 您有什么建议可以帮我解决这个问题吗? 谢谢你的关注。

P.S。来自我糟糕的英语

3 个答案:

答案 0 :(得分:6)

这是一个简单的例子......

您应该了解的ProgressBar类只有三个成员。最大值,最小值和值属性。

使用ProgressBar构造函数创建进度条控件。

this.progressBar1 = new System.WinForms.ProgressBar();

创建进度条实例后,可以使用ProgressBar的“最小”和“最大”属性设置进度条的范围。

progressBar1.Maximum = 200;
progressBar1.Manimum=0;

Step属性用于设置进度条中的步数。

progressBar1.Step=20;

Value属性用于设置状态栏的当前值。

protected void displayProgress (object sender, System.EventArgs e)

{

    if (progressBar1.Value >= 200 )

    {

        progressBar1.Value = 0;

        return;
    }

    progressBar1.Value += 20;

}

答案 1 :(得分:5)

我建议在Winforms应用程序中实现BackgroundWorker对象。

这将提供一种简单的多线程方法,可以在不锁定应用程序的情况下进行密集处理。您可以将它与ProgressBar结合使用,或者甚至可以设置自己的过程指示器。

答案 2 :(得分:3)

如果您知道新窗口将下载多少张图片,则可以轻松实现进度条。

只需在Visual Studio的表单设计器中将表单放在表单上的某个位置即可。 现在,您可以在代码中使用进度条,如下所示:

MyProgressBar.Minimum = 0;
MyProgressBar.Maximum = TotalPicturesToDownload;

for (int i = 1; i<= TotalPicturesToDownload; i++)
{
//Do whatever necessary to download picture nr i
//....

//Update the progressBar
MyProgressBar.Increment(1);

}

如前所述,建议不要在UI线程中执行此操作,而是在单独的线程上(例如使用BackGroundWorker),否则您的表单可能会冻结并使您的进度条不能更新。