【问题标题】:YesNo MessageBox not closing when x-button clickedYesNo MessageBox 在单击 x 按钮时未关闭
【发布时间】:2009-10-09 21:15:34
【问题描述】:

当我打开一个带有选项 YesNo 的 MessageBox 时,右上角的(通常)取消十字会显示但没有效果。

System.Windows.MessageBox.Show("Really, really?", "Are you sure?", MessageBoxButton.YesNo);

如果我提供 YesNoCancel 作为选项,单击叉号会关闭带有 DialogResult Cancel 的对话框。

System.Windows.MessageBox.Show("Really, really?", "Are you sure?", MessageBoxButton.YesNoCancel);

如果根本没有隐藏,我本来希望十字“看起来被禁用”,点击它没有效果。 可能我不是第一个观察到这一点的人。 您最喜欢的隐藏/禁用此按钮或解决问题的方法是什么?

注意:我更喜欢不使用 System.Windows.Forms 的解决方案,因为我正在处理 WPF 项目并且希望尽可能避免任何 InterOp。

【问题讨论】:

    标签: .net wpf messagebox


    【解决方案1】:

    关闭按钮(在 MsgBox 的标题栏中):由于 MsgBox 窗口是操作系统的内置功能,它的 X 按钮仅在某些按钮存在时才启用。如果只有 OK 按钮,单击 X 按钮与按 OK 相同。否则,除非有取消按钮,否则 X 按钮将被禁用,在这种情况下,单击 X 与按下取消按钮相同。

    http://www.autohotkey.com/docs/commands/MsgBox.htm

    这是默认行为!从它是 MsgBox 到它的 MessageBox!

    【讨论】:

    • 感谢您的解释,至少现在我知道,X 何时有效,何时无效。现在我仍然需要通过隐藏 X 或设置样式来处理它,以使用户在多次单击它而没有任何响应时不会感到困惑。
    • 标记为答案,因为它至少回答了为什么会这样,即使没有提供如何更改它的好解决方案。
    • @Simon D:谢谢! (我是按顺序回复的,没注意到是你评论了两次!:))
    【解决方案2】:

    当您在资源管理器中删除文件时(在回收站属性中选中删除确认时),会出现一个消息框并询问“您确定要将这些 x 项移动到回收站吗?”带有标题“删除确认”和右上角的 X。逃脱也有效。可用的按钮只有“是”和“否”。我们怎样才能做到这一点?

    要么微软没有遵循他们的指导方针,要么没有向开发者提供这些。

    【讨论】:

    • 我刚刚注意到这种行为!
    【解决方案3】:

    查看此CodeProject article,它概述了如何旋转您自己的 MessageBox 类。有一节是关于禁用关闭按钮的。

    【讨论】:

    • 谢谢,有趣的文章。实际上,我希望有一个不需要替换整个 MessageBox 的解决方案。这篇文章似乎处理了 System.Windows.Forms.MessageBox - 我试图在纯 WPF 项目中避免这种情况(我将把它添加到问题中)。不过,如果我找不到其他方法,我会考虑使用这个 MessageBoxExtension 或将它的一些功能转移到一些非 WinForms MessageBox 扩展。
    • 多年来,一个非常普遍的要求是能够自定义系统消息框——无论是删除/禁用关闭按钮,还是自定义按钮。不幸的是,微软认为不适合让开发人员更多地控制看似相当简单的 api。
    猜你喜欢
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多