【问题标题】:MessageBox on the top from all threads所有线程顶部的 MessageBox
【发布时间】:2013-10-07 10:39:37
【问题描述】:

当应用程序启动时,从另一个线程显示启动画面。 但是,如果在启动过程中出现错误 - 将显示消息框。问题是:消息框显示在启动画面下方。我使用过 IWin32Window 所有者属性,甚至尝试使用 MessageBoxOptions.DefaultDesktopOnly 属性,但 id 没有帮助。

我该如何处理这种情况?

PS: 试图创建不可见的窗口,设置 TopMost - 并显示 MessageBox。没用。

【问题讨论】:

  • 您不应使用 UI 以外的其他线程来显示 Windows(Form、MessageBox、SplashScreen 等)
  • @SriramSakthivel:这并不普遍。您可以为每个窗口使用不同的线程。
  • @Douglas 这很适合争论,但不适合现实!我知道窗口与它创建的线程有 1->1 关系,但你不能为你创建的每个窗口创建专用线程
  • @SriramSakthivel:您不仅可以为每个窗口创建一个专用线程,而且如果您的应用程序的 UI 包含超过几个基本要素。几年后,众核时代将与我们同在,继续在单个线程上运行大量处理的应用程序很快就会被弃用。
  • @Douglas 听起来不错,让我们看看 :)

标签: c# winforms messagebox


【解决方案1】:

我使用多线程创建了一个类似的情况,并使用此代码将 MessageBox 保持在窗口顶部。基本上这段代码使消息框最顶部。

MessageBox.Show(this,
    "Your text",
    "Settings Needed",
    MessageBoxButtons.YesNo,
    MessageBoxIcon.Question,
    MessageBoxDefaultButton.Button1,
    (MessageBoxOptions)0x40000); // this is MB_TOPMOST flag

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多