【问题标题】:WinForms: Looking for an easy way to pop up a 'Processing..' panelWinForms:寻找一种简单的方法来弹出“正在处理..”面板
【发布时间】:2011-10-23 07:04:18
【问题描述】:

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

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

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

【问题讨论】:

  • 但是这样他会阻塞等待用户点击的进程并且他的计算不会被执行......

标签: c# winforms popup busyindicator


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 2017-04-16
        • 2013-08-22
        • 2016-03-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多