C#Windows应用程序中的热键按钮

如何在C#Windows应用程序中按下热键

覆盖Form的ProcessCmdKey 。 如果您发现了自己喜欢的击键,请调用与该按钮相同的方法。

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.Control | Keys.X)) { DoSomething(); return true; } return base.ProcessCmdKey(ref msg, keyData); } private void button1_Click(object sender, EventArgs e) { DoSomething(); } private void DoSomething() { MessageBox.Show("hi!"); } 

编辑 :如果你能找到合适的助记符,周杰伦的方法会更好。

将按钮的UseMnemonic属性设置为true,并在要用于热键的按钮的Text属性中的字母前面添加一个&符号。

用户将按Alt +激活热键。

Windows应用程序和快捷键是同义词。 人们更喜欢使用快捷键来加快活动速度。 假设您在文本框中,并且您想要按F5重新加载表单。 您不想移动鼠标光标。 那么,你将要做的是你将在文本框中添加“Key Down”事件。 但是,如果您在不同的文本框或按钮中,那将无法正常工作。 因此,您将向表单添加“Key Down”事件。

但是你需要启用一个属性才能正常工作,这就是诀窍。

 private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.F5) { btnRefresh_Click(null, null); } } 

但是,黄金技巧是,在表单的属性窗口中进行以下更改:

 KeyPreview = True 

享受编程。

此外,每种forms都有AcceptButton和CancelButton属性。 如果你要缩小你的热键用法来输入和转义按钮,而这些按钮又应该调用某些按钮,我建议你考虑使用这些属性。

我想这就是你想要的:

 private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { //Do whatever you want here... } } 

当然,您可以将Keys.Enter更改为您想要的任何键。

 this.KeyDown += new KeyEventHandler(Form1_KeyDown); void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.Alt && e.KeyCode == Keys.W) { //do something } } 

根据Micheal的回答,如果您不使用组合键,这里的版本更优雅:

 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); } } 

即使这篇文章超级老,这是一种更简单的方法,但代码非常差,但它可以很好地完成工作。

  private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { button1.PerformClick(); }