How to detect multiple keys down onkeydown event in wpf?

前端 未结 3 975
走了就别回头了
走了就别回头了 2020-12-03 23:28

I don\'t want to detect any double key combination, so solutions like

if(Keyboard.IsKeyDown(specificKey)){

}

won\'t work, unless of cours

3条回答
  •  一向
    一向 (楼主)
    2020-12-03 23:35

    Refactored your code: XAML:

    code-behind:

    List _pressedKeys = new List();
    
    
    private void TextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (_pressedKeys.Contains(e.Key))
            return;
        _pressedKeys.Add(e.Key);
    
    
        PrintKeys();
        e.Handled = true;
    }
    
    private void TextBox_KeyUp(object sender, KeyEventArgs e)
    {
        _pressedKeys.Remove(e.Key);
        PrintKeys();
        e.Handled = true;
    
    }
    
    private void PrintKeys()
    {
        StringBuilder b = new StringBuilder();
    
        b.Append("Combination: ");
        foreach (Key key in _pressedKeys)
        {
            b.Append(key.ToString());
            b.Append("+");
        }
        b.Length--;
        Console.WriteLine(b.ToString());
    }
    
    private void TextBox_LostFocus(object sender, RoutedEventArgs e)
    {
        _pressedKeys.Clear();
    }
    

提交回复
热议问题