你能添加一个ESC键快捷方式吗

本文关键字:ESC 一个 快捷方式 添加 | 更新日期: 2023-09-27 18:27:36

我的Form上有一个Menustrip项目,当我按下它时,它会关闭Form。我想为MenuStrip项目设置快捷键Esc,但在"ShorcutKey"设置中,它没有Esc?我必须在MenuStrip项目上显示Esc是快捷键。

这样做不起作用:

menuStripItem.ShortcutKeys = Keys.Escape;

你能添加一个ESC键快捷方式吗

Winforms对您选择的快捷键非常挑剔。规则是它必须是一个函数键(F1-F12)或包含Keys.ControlKeys.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事件中,检查是否按下了ESCClose()表单。