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消息(以及重绘消息到您的应用程序表单)