我的Menustrip
上有一个Form
项目,当我按下它时它会关闭Form
。我想为我的MenuStrip
Item Esc 创建快捷键,但是在" ShorcutKey"设置,它没有 Esc 的选项,有什么方法可以让它做到 Esc ?我必须在MenuStrip
项目上显示 Esc 是快捷键。
这样做不起作用:
menuStripItem.ShortcutKeys = Keys.Escape;
答案 0 :(得分:9)
Winforms对您选择的快捷键击很挑剔。规则是它必须是功能键(F1-F12)或包含Keys.Control
或Keys.Alt
的其他键。这里更大的意图是你不能意外地替换可能在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);
}
答案 1 :(得分:6)
我认为没有直接的解决方案,您可以使用此解决方法,在代码中设置ShortcutKeyDisplayString
menuStripItem.ShortcutKeyDisplayString = "ESC";
在表单的KeyDown
事件中,检查是否按了ESC
并Close()
表单。