WinForms:寻找一种简单的方法来弹出一个'Processing ..'面板

时间:2011-08-09 14:32:05

标签: c# winforms popup busyindicator

我有一个WinForms应用程序,在某些时候,它会做一些需要几秒钟的计算。在此期间,我禁用了控件。另外,我想显示一个弹出窗口,它可以更明显地“阻止”应用程序。

我尝试将一个Panel放在Form的顶部以便这样做,但是我在某种程度上无法添加任何文本。即我放在那里的标签和图像框以某种方式不显示或在Panel后面。

如何以快速简便的方式实现这一目标?我的意思是,没有重新设计整个表格。

3 个答案:

答案 0 :(得分:4)

你的附加面板中没有出现的问题是,所有内容都发生在同一个线程中,但是你的计算阻止了所有内容的出现,因为它们正在占用线程。您应该考虑使用backgroundWorker,它是WinForms中的工具之一。您应该将执行计算的函数调用抛出到backgroundWorker的DoWork方法中,然后表单本身可以在计算过程中继续运行。

有关示例,请参阅http://msdn.microsoft.com/en-us/library/cc221403%28v=vs.95%29.aspx

答案 1 :(得分:1)

创建一个在处理过程中弹出的对话框(窗体),然后在处理完成后关闭对话框。

通过使用对话框而不是消息框,您仍然可以在处理完成后控制关闭窗口。

答案 2 :(得分:1)

您可以使用Label和ImageBox创建一个简单的UserControl,也可以使用公共setter来表示它们的值。您可以将其添加到表单,将其Visible属性设置为false。然后,您可以在计算过程中将其显示出来,最后返回顶部隐身。