6

我的Menustrip上有一个项目,当我按下它时Form它会关闭我的。Form我想为我的MenuStripItem制作快捷键Esc,但是在“ShorcutKey”设置中,它没有选项Esc,有什么办法可以做到Esc吗?我必须让它显示在作为快捷键的MenuStrip项目上。Esc

这样做不起作用:

menuStripItem.ShortcutKeys = Keys.Escape;
4

2 回答 2

9

Winforms 对您选择的快捷键很挑剔。规则是它必须是功能键 (F1-F12) 或包含其中之一Keys.ControlKeys.Alt包含的另一个键。这里更大的意图是您不能意外替换可能用于例如 a 的普通密钥TextBox。Escape 键通常操作对话框的取消按钮。

Keys.Escape比较特别;Alt+Escape 和 Ctrl+Escape 不起作用,因为它们是 Windows 中的全局快捷键。

所以你不能使用该ShortcutKeys属性;您必须以不同的方式识别 Escape 键。通过覆盖该ProcessCmdKey()方法可以在您的 Form 类中轻松完成。将此代码粘贴到您的表单中:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
    if (keyData == Keys.Escape) {
        this.Close();
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}
于 2013-08-14T16:04:19.917 回答
6

我认为没有直接的解决方案,您可以使用此解决方法,ShortcutKeyDisplayString在代码中设置

menuStripItem.ShortcutKeyDisplayString = "ESC";

在表单的KeyDown事件中,检查是否ESC按下Close()了表单。

于 2013-08-14T15:53:25.740 回答