Tim*_*m S 18 c# keyboard shortcut winforms
在C#(Microsoft Visual Studio 2010)中,如何为按钮分配键盘快捷键,如下所示?
private void closeButton_Click(object sender, EventArgs e)
{
// Close the program
this.Close();
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以在按钮的文本中使用"&"字符并创建一个Alt- n快捷方式,但我想创建一个按键快捷方式,例如c执行上述操作.
dkn*_*ack 14
的KeyDown是你的朋友;)例如,如果你想要的快捷键A同时Shift按下时,试试这个:
void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.A && e.Shift)
// Do something
}
Run Code Online (Sandbox Code Playgroud)
如果你想要一个"真正的"键盘快捷键,你可以使用钩子.看看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);
}
}
Run Code Online (Sandbox Code Playgroud)
您无需更改KeyPreview值.
小智 5
如果你想在 switch 语句中添加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);
}
}
Run Code Online (Sandbox Code Playgroud)