尝试为我的表单创建HotKeys
码
private void FormMain_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
MessageBox.Show("e");
}
}
适用于一个键,但如果我想使用CTRL + N之类的键组合,请尝试使用if (e.KeyChar == (char)Keys.Enter && e.KeyChar == (char)Keys.N)
- 但它不起作用。我是对的 - 使用这样的密钥组合代码?
修改
此代码仅捕获第一个按键,但不是组合 - 所以如果我按CTRL + Enter - 代码捕获CTRL而不是Enter键 - 尝试创建其他if
但是 - 结果相同......
将事件从KeyPress
更改为KeyDown
- 现在可以正常工作
答案 0 :(得分:2)
对于Control
和另一个字母的其他组合,有一个有趣的事情,e.KeyChar
将有不同的代码。例如,通常e.KeyChar = 'a'
的代码为97
,但在按Control
(或a
)之前按A
时,实际代码为{{1} }}。所以我们有这个代码来处理其他组合:
1
您也可以将private void FormMain_KeyPress(object sender, KeyPressEventArgs e)
{
//Pressing Control + N
if(e.KeyChar == 'n'-96) MessageBox.Show("e");
//Using this way won't help us differentiate the Enter key (10) and the J letter
}
事件用于此目的。 (事实上,KeyDown
更合适)。因为它支持KeyDown
,其中包含修饰键和另一个文字键的组合信息:
KeyData
答案 1 :(得分:1)
尝试将 Ctrl + N 组合,
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.N)
{
MessageBox.Show("e");
}