你能添加一个ESC键快捷方式吗
本文关键字:ESC 一个 快捷方式 添加 | 更新日期: 2023-09-27 18:27:36
我的Form
上有一个Menustrip
项目,当我按下它时,它会关闭Form
。我想为MenuStrip
项目设置快捷键Esc,但在"ShorcutKey"设置中,它没有Esc?我必须在MenuStrip
项目上显示Esc是快捷键。
这样做不起作用:
menuStripItem.ShortcutKeys = Keys.Escape;
Winforms对您选择的快捷键非常挑剔。规则是它必须是一个函数键(F1-F12)或包含Keys.Control
或Keys.Alt
的另一个键。这里更大的意图是,您不能意外地替换可能在TextBox
中使用的普通密钥。Escape键通常操作对话框的取消按钮。
CCD_ 9比较特殊;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);
}
我不认为有直接的解决方案,你可以使用这个变通方法,在代码中设置ShortcutKeyDisplayString
menuStripItem.ShortcutKeyDisplayString = "ESC";
在表单的KeyDown
事件中,检查是否按下了ESC
和Close()
表单。