2009-04-16 31 views
2

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

P.S .Sorry我的英语不好

回答

6

下面是一个简单的例子....

只有三个,你应该知道的进度条类的成员。最大值,最小值和值属性。

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

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

创建进度条的实例后,通过使用ProgressBar的Minimum和Maximum属性设置进度栏的范围。

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; 

} 
5

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

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

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),否则你的形式可能冻结并让你的进度条不更新。