gpt4 book ai didi

c# - 使用 MessageBox.Show() 阻止所有窗口

转载 作者:可可西里 更新时间:2023-11-01 09:47:57 27 4
gpt4 key购买 nike

我目前正在开发具有多个窗口的 WPF 应用程序。从“主”窗口,您应该能够关闭整个应用程序。在关闭应用程序之前,客户希望它显示一个对话框,该对话框基本上询问“您确定要关闭该应用程序吗”并阻止每隔一个窗口,直到用户回答。

我目前正在使用 MessageBox.Show() 创建此对话框,但出于某种原因它只会阻塞主窗口。

这是我所说的最简单的例子;如果您创建一个带有两个按钮的 WPF 窗口:

private void openChildWindowButton_Click(object sender, RoutedEventArgs e)
{
var window = new ChildWindow();
window.Show();
}

private void openDialogButton_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(this, "This should freeze all other windows");
}

打开对话框将完全卡住第一个窗口。如果您单击它或尝试进行任何类型的交互,操作系统会发出“叮”声!声音并闪烁消息框上的边框。但是您打开的所有其他窗口都可以被点击、移动、调整大小等,而这正是我想要防止的。

最佳答案

事实证明, 有一种方法可以做到这一点,但它并不完美。它涉及使用 MessageBox 的 WinForms 版本并将未记录的选项作为最后一个属性传递。

var result = System.Windows.Forms.MessageBox.Show("Are you sure you want to exit this app?", "Exit", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question, System.Windows.Forms.MessageBoxDefaultButton.Button2, (System.Windows.Forms.MessageBoxOptions)8192 /*MB_TASKMODAL*/);

来源:http://social.msdn.microsoft.com/Forums/vstudio/en-US/8d1bd4a2-455e-4e3f-8c88-7ed49aeabc09/messagebox-is-not-applicationmodal?forum=wpf

希望这对以后的其他人有帮助!

关于c# - 使用 MessageBox.Show() 阻止所有窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19504249/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com