你能添加ESC Key快捷方式吗?

Doz*_*789 6 .net c# winforms

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

这样做不起作用:

menuStripItem.ShortcutKeys = Keys.Escape;
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 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);
}
Run Code Online (Sandbox Code Playgroud)

  • 这将用于关闭它,但我已经有了代码.我需要的是让它显示快捷键. (2认同)
  • +1这可能不是OP所寻求的,但正是我所寻找的,并且保存了我添加我自己的问题.非常感谢. (2认同)

Kur*_*ran 6

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

menuStripItem.ShortcutKeyDisplayString = "ESC";
Run Code Online (Sandbox Code Playgroud)

KeyDown表格检查的情况下,ESC是否按下Close()了表格.