我需要在两个窗体之间插入一个进度条,当我点击一个按钮打开一个窗口时我需要等待一个窗口,我需要等待才能载入最后一个窗口('cos有许多图片下载最后一张表格),我决定使用进度条显示剩余的时间来打开所请求的窗口。 现在我不知道如何在代码中实现此功能(这是我第一次使用进度条)。 你有什么建议可以帮助我解决这个问题吗? 感谢您的关注。从WinForms中的进度条
P.S .Sorry我的英语不好
我需要在两个窗体之间插入一个进度条,当我点击一个按钮打开一个窗口时我需要等待一个窗口,我需要等待才能载入最后一个窗口('cos有许多图片下载最后一张表格),我决定使用进度条显示剩余的时间来打开所请求的窗口。 现在我不知道如何在代码中实现此功能(这是我第一次使用进度条)。 你有什么建议可以帮助我解决这个问题吗? 感谢您的关注。从WinForms中的进度条
P.S .Sorry我的英语不好
下面是一个简单的例子....
只有三个,你应该知道的进度条类的成员。最大值,最小值和值属性。
使用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;
}
我建议在您的Winforms应用程序中实现BackgroundWorker对象。
这将提供一种简单的多线程方法,可以在不锁定应用程序的情况下进行密集处理。您可以将此与ProgressBar一起使用,或者您甚至可以设置您自己的流程指示器。
如果您知道新窗口将下载多少张图片,则实现进度条相当容易。
只需在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),否则你的形式可能冻结并让你的进度条不更新。