C# WinForms:寻找一种弹出';处理..';面板

C# WinForms:寻找一种弹出';处理..';面板,c#,winforms,popup,busyindicator,C#,Winforms,Popup,Busyindicator,我有一个WinForms应用程序,在某个时刻,它将执行一些需要几秒钟的计算。在此期间,我禁用了控件。此外,我想显示一个弹出窗口,这种“块”的应用程序更明显 为了做到这一点,我尝试在表单顶部放置一个面板,但不知何故,我无法在其中添加任何文本。也就是说,我放在那里的标签和图像框不知何故没有显示或在面板后面 有什么建议可以让我快速轻松地做到这一点吗。。我的意思是,无需重新设计整个表单。创建一个对话框(windows表单)以在处理过程中弹出,然后在处理完成后关闭该对话框 通过使用对话框而不是消息框,您仍

我有一个WinForms应用程序,在某个时刻,它将执行一些需要几秒钟的计算。在此期间,我禁用了控件。此外,我想显示一个弹出窗口,这种“块”的应用程序更明显

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

有什么建议可以让我快速轻松地做到这一点吗。。我的意思是,无需重新设计整个表单。

创建一个对话框(windows表单)以在处理过程中弹出,然后在处理完成后关闭该对话框


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

您可以创建一个简单的用户控件,其中只包含一个标签和一个图像框,可能包含用于其值的公共setter。您可以将其添加到表单中,并将其Visible属性设置为false。然后,您可以在计算过程中使其可见,并最终返回顶部不可见。

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


参见示例

,但这样他将阻止等待用户单击的进程,他的计算将不会执行。。。