.NET:如何让Escape关闭MessageBox.Show()?

Ian*_*oyd 15 .net dialog modal-dialog winforms

假设代码:

MessageBox.Show(this, 
       "Would you like the differential girdle spring on the up-end of the grammeters?", 
       "Smi-Boloid Stater Slots", 
       MessageBoxButtons.YesNo, 
       MessageBoxIcon.Warning);
Run Code Online (Sandbox Code Playgroud)

替代文字

如果用户按下Escape,我希望它关闭消息框,并且该Show()方法可以返回DialogResult.None.

相关问题:如何启用MessageBox.Show右上角的"X"让用户中止?


有点像Windows资源管理器确认对话框让您按下转义中止.

有点像Internet Explorer确认对话框如何让您按下escape以中止.

有点像Outlook确认对话框如何让您按下转义中止.

有点像宇宙历史中的每个对话框都让用户按下转义,或点击X,以便说:

"我不知道你在问我什么,请不要破坏我的电脑."


来自Vista UX准则

使用"是"和"否"按钮仅回答是或否问题.主要指示应自然地表达为是或否问题.对于是或否问题,切勿使用"确定"和"取消".

BC.*_*BC. 12

您必须使用枚举值"MessageBoxButtons.YesNoCancel"启用"取消"选项

这将返回DialogResult.Cancel

在此输入图像描述

  • 逃避根本不是一个答案,它是一个"哦上帝,我做了什么,我不知道!" (2认同)

Nol*_*rin 4

我不认为这是可能的,尽管典型的等效方法是使用Cancel指定MessageBoxButtons标志之一(特别是在您的情况下为 YesNoCancel )。

如果您确实需要的话,使用此功能重新创建您自己的 MessageBox 函数应该相当简单,尽管Cancel确实可以完成这项工作。