我必须在TextBox中捕获以下键盘事件-SHIFT + 8(在数字键盘上)。这也意味着NumLock将打开。当我尝试以下SHIFT + UP时未打印:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Shift && e.KeyCode == Keys.NumPad8)
Console.WriteLine("SHIFT + UP");
Console.WriteLine(e.KeyCode);
Console.WriteLine(e.KeyData);
Console.WriteLine();
}
但是CTRL + 8(在数字键盘上)正在工作。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.NumPad8)
Console.WriteLine("CTRL + UP");
}
更新:一次按SHIFT + 8键会打印以下内容:
ShiftKey
ShiftKey, Shift
Up
Up
ShiftKey
ShiftKey, Shift
有人可以向我解释一下,为什么不启动SHIFT + 8,但是CTRL + 8可以正常工作吗?
附言我写了+ UP,因为用户想使用数字键盘箭头和SHIFT键进行导航,但是他的NumLock也将打开。这就是为什么我抓到Keys.NumPad8的原因。
祝一切顺利,
佩塔尔
最佳答案
由于shift + numpad8 = UP以及同时按下这些键,因此无法使用:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
string shift = e.Shift.ToString(); //false
string code = e.KeyCode.ToString(); //up
}
如果您同时按下Shift键和向上键
移位-正确
代码向上
因此,如果您想使用shift和numpad8,则只需检查UP键。
关于c# - 键盘事件问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3012270/