我想识别我的Control的按键。为此,我使用KeyDown事件。我想要检测的击键类型是CTRL + A或CTRL + C等等。 (所以多个键的组合)
现在我已经恢复了KeyEventArgs并找到了密钥枚举。 (一切都很完美,只需使用|和&结合并找到正确的键) 示例可以是Shift + A,然后KeyData枚举的值是: ShiftKey |转移|甲
BUT
当我按下控制键时尝试它(所以控制+ A)我得到131137作为响应? 而且我不知道为什么我没有得到类似ControlKey的东西控制| A(或类似的东西)
我已经认识到我是否尝试使用A ist 131137与B ist 131138与C ist 131139等等...... 所以我认为可以计算密钥,但我认为应该有一个更好的解决方案,那么这样的事情呢?
131137 - 131072 = 65(A)
我是对的,还是这是预先解决的解决方案,还是我误解了一些基本的?
答案 0 :(得分:6)
您可以使用KeyEventArgs对象中的属性
来获取Ctrl,Shift等等http://msdn.microsoft.com/en-us/library/system.windows.forms.keyeventargs_properties(v=vs.90).aspx
void Control_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.F4)
{
// Be happy
}
}
答案 1 :(得分:2)
131072 ==(int)Keys.Control
所以
131137(100000000001000001二进制)==(int)(Keys.Control | Keys.A)
你可以放点那样的东西
private void myControl_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyData == (Keys.A | Keys.Control)) {
...
}