我必须在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/

10-13 06:14