【问题标题】:MessageBox not showing on event消息框未在事件中显示
【发布时间】:2021-12-10 22:14:49
【问题描述】:

我有一个程序,我在一个事件中显示一个 (System.Windows) 消息框,但它没有显示出来。请注意,我很确定这适用于之前的 VS2019 更新,但不适用于版本 16.11.5 和 VS2022RC。

我也搜索了一些提示,但没有任何结果。所以要么我犯了一些明显的错误,要么这是新的东西。

我认为我无法提供任何其他额外信息,因为我认为这可能会产生误导。

感谢您的帮助 帕特里克

【问题讨论】:

  • 你的回调是否在主线程上执行?另外,我强烈建议不要使用任何不带父窗口的MessageBox.Show 重载,因为弹出窗口很容易出现在任何其他窗口后面(添加this 作为第一个参数)
  • 哇哦,解决了这个问题!谢谢,我的程序中是否有更改一百万个 MessageBox 调用?!我认为答案是肯定的......无论如何,消息框没有出现在它后面真的根本没有出现!您可能希望将其发布为关闭问题的答案。
  • Messagebox 可能看起来很方便,但在现实世界的生产代码中它很少是一个好的计划。我最近看到实时代码在消息框中报告了任何错误。从处理许多记录的循环内部调用。使应用程序完全无法使用。您无法关闭该应用。

标签: c# wpf events messagebox


【解决方案1】:

MessageBox.Show(string) 及其任何不采用IWin32Window 的重载都会创建一个非模态窗口。然后,此消息框可能会显示在其他窗口后面或最终根本不显示(不知道为什么是后者,但可能它在屏幕之外左右)。为防止这种情况,请始终使用带有IWin32Window 的重载作为第一个参数。在一个简单的 WinForms 应用程序中,这通常是调用 Show() 方法的表单,因此参数可以只是 this

TL;DR

改变

MessageBox.Show("Message");

MessageBox.Show(this, "Message");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多