微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用MessageBox.Show阻止所有窗口

我目前正在WPF应用程序有多个窗口。 从“主”窗口,你应该能够closures整个应用程序。 在应用程序closures之前,客户端希望它显示一个对话框,基本上询问“你确定要closures应用程序”,并阻止其他窗口,直到用户应答。

我目前使用Message@R_404[email protected]()来创build这个对话框,但由于某种原因,它只能阻止主窗口。

这是我所说的最简单的例子。 如果你用两个button创build一个WPF窗口:

private void openChildWindowButton_Click(object sender,RoutedEventArgs e) { var window = new ChildWindow(); window.Show(); } private void openDialogButton_Click(object sender,RoutedEventArgs e) { Message@R_404[email protected](this,"This should freeze all other windows"); }

打开对话框将完全冻结第一个窗口。 如果你点击它或尝试任何forms的交互,操作系统就会“叮当作响”。 声音并在消息框上闪烁边框。 但是你打开的所有其他窗口都可以被点击,移动,resize等,这就是我想要防止的。

如何显示网页

多字节字符常量和位图文件头types常量

具有多个参数的协议处理程序

如何保持subprocess.Popen控制台在Windows上崩溃后打开?

python3.5.2 bdist_wininst:需要Python版本-32,在registry中找不到

如何强制区分大小写的表名称

Windows上的python libclang绑定无法从崇高文本初始化翻译单元

无法在Windows中安装Scipy?

哪个PID监听给定的端口在c#

如何让DirectShow从资源播放video?

事实证明,有一种方法可以做到这一点,但并不漂亮。 它涉及到使用Message@R_404_6277@的WinForms版本并传递一个未公开的选项作为最后一个属性

var result = System.Windows.Forms.Message@R_404[email protected]("Are you sure you want to exit this app?","Exit",System.Windows.Forms.Message@R_404[email protected],System.Windows.Forms.Message@R_404[email protected],System.Windows.Forms.Message@R_404[email protected],(System.Windows.Forms.Message@R_404_6277@Options)8192 /*MB_TASKMODAL*/);

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

希望这对未来的其他人有帮助!

如果这在Windows窗体中的WPF中工作,你可以使用:

Message@R_404[email protected]()

克里斯

以上不工作…

编辑:

但有一个解决方法:像一个Message@R_404_6277@(使用固定的边框类型)样式窗体,然后使用ShowDialog()显示它。 然后将属性中的Forms Cacel和Ok Button设置为您的按钮,您可以像在Message@R_404_6277@中一样获得DialogResult。 希望帮助,但也是从Windows窗体;)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐