2

WPF: Modifier Keys (Shift, Control, Alt, Windows) bei Tastendruck erkennen

Will man in C# verschiedene Tastatur-Eingaben erkennen, so kann man einfach einen Handler auf das KeyDown-Event registrieren. Dort fragt man dann folgendermaßen die gedrückte Tasten ab:

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Escape)
    {
        // do sth. here
    }
 }

Hier wird also geschaut, ob die Escape-Taste gedrückt wurde. Dann kann man beispielsweise das Window schließen, auf welchem das Event registriert ist.

Will man allerdings noch die Modifier Keys, also Shift, Steuerung, Alt oder Windows abfragen, gestaltet sich das ganze einen Tick schwieriger.
Das folgende Beispiel zeigt, wie man [Shift] + [Ctrl] + P abfragen kann.

if (e.Key == Key.P && Keyboard.Modifiers.HasFlag(ModifierKeys.Shift) && Keyboard.Modifiers.HasFlag(ModifierKeys.Control))
{
    // do sth. here
}

Alternativ kann man das auch mit InputBindings und Commands machen. Dazu verwendet man z.B. den RelayCommand von John Smith (http://msdn.microsoft.com/de-de/magazine/dd419663.aspx) und fügt dann dem XAML so das InputBinding hinzu:

<Window>
    <Window.InputBindings>
        <KeyBinding Key="P" Modifiers="Control+Shift" Command="{Binding MYRELAYCOMMAND}"/>
    </Window.InputBindings>
</Window>

MYRELAYCOMMAND muss natürlich ersetzt und vorher erstellt werden.

2 Kommentare

  1. KeyDown += Window_KeyDown;

    Wenn es nicht klappt, den Code Schnipsel mal in den Konstruktor hinzufügen, sollte dann klappen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert