C#如何使用选取框进度条加载表单?
我创建了一个只有带字幕样式的进度条的loadingForm。 在我的mainForm中我试图这样做:
//before downloading loadingForm lf = new loadingForm(); lf.Show(); //start downloading //finishdownloading lf.Close();
显示了loadingForm但没有出现进度条,表格看起来像是崩溃了。 完成下载后,loadingForm关闭,我的应用程序继续正常运行。 在loadingForm我只有:
void loadingForm_Load(object sender, EventArgs e) { progressbar1.visible = true; }
我已经将progressbar1样式设置为loadingForm.design中的选取框。 我该如何解决? 感谢您的帮助。
您应该看看使用BackgroundWorker类进行耗时的操作,以便UI可以在后台工作线程完成工作时继续显示进度。
- 如何:使用后台工作程序
- C#中的BackgroundWorker基础知识
- C#BackgroundWorker教程
这很可能是因为下载和带有进度条的表单在同一个线程上运行。 您可以使用BackgroundWorker在与表单不同的线程中执行下载。
UI线程可能没有“资源”来重绘ui,您应该使用上面提到的后台工作程序,或者处理队列中的应用程序消息。 从Show()方法到Close()方法,您应该确保调用Application.DoEvents(),以便处理所有Windows消息(以及重绘消息到您的应用程序表单)