2

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

为了做到这一点,我尝试在表单顶部放置一个面板,但是我无法在其中添加任何文本。即我放在那里的标签和图像框不知何故没有显示或在面板后面。

有什么建议可以让我快速简单地实现这一目标吗?.. 我的意思是,无需重新设计整个表单。

4

3 回答 3

4

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

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

于 2011-08-09T14:59:40.600 回答
1

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

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

于 2011-08-09T14:40:24.477 回答
1

您可以创建一个简单的用户控件,其中只有一个标签和一个 ImageBox,也许可以为它们的值使用公共设置器。您可以将其添加到表单中,将其 Visible 属性设置为 false。然后,您可以在计算过程中使其可见,最后返回顶部不可见。

于 2011-08-09T14:59:00.537 回答