代码之家  ›  专栏  ›  技术社区  ›  Petar Minchev

键盘事件问题

  •  2
  • Petar Minchev  · 技术社区  · 14 年前

    我必须在文本框中捕获以下键盘事件-SHIFT+8(在 小键盘 ). 这也意味着 纽姆洛克 将打开。当我尝试以下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");
    }
    

    更新

    ShiftKey
    ShiftKey, Shift
    
    Up
    Up
    
    ShiftKey
    ShiftKey, Shift
    

    有人能给我解释一下,为什么SHIFT+8没有被触发,而CTRL+8在工作?

    附:我写的 +向上 ,因为用户希望使用numpad箭头和SHIFT键进行导航,但他的NumLock也将打开。所以我才抓到你 键.NumPad8 .

    佩塔尔

    1 回复  |  直到 14 年前
        1
  •  7
  •   Ahmet Kakıcı    14 年前

    它不起作用,因为shift+numpad8=UP,当您同时按下这些键时:

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        string shift = e.Shift.ToString();    //false
        string code = e.KeyCode.ToString();   //up
    }
    

    如果你同时按下shift和up键 移位-真

    所以如果你想赶上班次;你只需要检查一下钥匙。