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