关闭 WPF 应用程序后 System.Windows.MessageBox.Show() 在后台保持打开状态

Posted

技术标签:

【中文标题】关闭 WPF 应用程序后 System.Windows.MessageBox.Show() 在后台保持打开状态【英文标题】:System.Windows.MessageBox.Show() remains open in background after closing WPF application 【发布时间】:2021-07-17 12:14:52 【问题描述】:

最近我尝试在 WPF 项目中实现 System.Windows.MessageBox.Show()。我正在使用使用 xaml 标签 "WindowState="Maximized" " 的全屏应用程序。现在问题与消息框有关,假设如果用户在主窗口打开时收到消息框,那么用户 1st 必须单击消息框弹出窗口,然后只有他才能执行任何其他操作。但是每当用户在不关闭消息框的情况下最小化应用程序时。它将在后台保持打开状态,如果我们关闭应用程序,它将在后台运行

【问题讨论】:

【参考方案1】:

由于消息框是当前窗口的,它总是作为对话框打开,它是提示的。因此,不可能忽略它并继续使用当前或应用程序窗口。如果您想打开它以便可以忽略它并让用户与应用程序交互,您将不得不制作另一个可以充当消息框的表单。

【讨论】:

【参考方案2】:

MessageBox 用于显示用于某种用户确认的对话框。因此行为符合标准。

但是,如果您需要允许用户继续使用父窗口而不强制他关闭子窗口,则可以使用具有所需内容的窗口而不是 MessageBox:

private void btnPopup_Click(object sender, RoutedEventArgs e)

  new Window()  Owner = this.Show(); // Pass this as owner to allow closing child window when application closes
  MessageBox.Show("Popup Shown");

您可以根据您的要求创建带有 UI 的自定义 WPF 窗口类。

问候

【讨论】:

以上是关于关闭 WPF 应用程序后 System.Windows.MessageBox.Show() 在后台保持打开状态的主要内容,如果未能解决你的问题,请参考以下文章

关于WPF中Popup中的一些用法的总结

WPF中获取image图片

用不了System.Windows.Forms,如何使用MessageBox?

关闭 WPF 应用程序后 System.Windows.MessageBox.Show() 在后台保持打开状态

2021-12-12 WPF面试题 什么是WPF的值转换器?

wpf关闭主窗口询问“退出”的问题