按钮的键盘快捷键

在C#(Microsoft Visual Studio 2010 )中,如何为按钮分配键盘快捷键,如下所示?

private void closeButton_Click(object sender, EventArgs e) { // Close the program this.Close(); } 

我知道我可以在按钮的文本中使用“&”字符并创建一个Altn快捷方式,但我想创建一个按键快捷键,例如c来执行上面的操作。

KeyDown是你的朋友;)例如,如果你想在按住Shift 同时使用快捷键A ,试试这个:

  void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.A && e.Shift) // Do something } 

如果你想要一个“真正的”键盘快捷键,你可以使用钩子。 看Stack Overflow问题RegisterHotKeys和全局键盘挂钩?

这是一种不同的方法:

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch(keyData) { case Keys.F2: // do something... return true; case Keys.F3: // do something... return true; case Keys.F4: // do something... return true; default: return base.ProcessCmdKey(ref msg, keyData); } } 

您无需更改KeyPreview值。

如果你想在开关语句中添加Ctrl + S ,那么你也可以尝试下面的代码。

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch (keyData) { case Keys.Control | Keys.S: // do something... return true; case Keys.Control |Keys.Alt | Keys.S: // do something... return true; case Keys.F2: // do something... return true; case Keys.F3: // do something... return true; case Keys.F4: // do something... return true; default: return base.ProcessCmdKey(ref msg, keyData); } }