wake-up-neo.com

Wie erkenne ich Modifikatortasten in WPF?

Gibt es einige globale Konstrukte, die ich verwenden kann, wenn auf die Schaltflächen Steuerung, Umschalttaste und Alt gedrückt werden muss? Zum Beispiel im MouseDown-Ereignis einer TreeView.

Wenn das so ist, wie?

122
Joan Venge

Verwenden Sie die Klasse Keyboard . Mit Keyboard.IsKeyDown können Sie überprüfen, ob Control, Shift, Alt jetzt deaktiviert ist.

Für Shift:

if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
{ /* Your code */ }

Zur Kontrolle:

if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{ /* Your code */ }

Für Alt:

if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt))
{ /* Your code */ }
211
Kyrylo M

Es gibt auch:

// Have to get this value before opening a dialog, or user will have released the control key
if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{

}
106
Chuck Savage
    private bool IsShiftKey { get; set; }

    private void OnPreviewKeyDown(object sender, KeyEventArgs e)
    {
        IsShiftKey = Keyboard.Modifiers == ModifierKeys.Shift ? true : false;

        if ((Key.Oem3 == e.Key || ((IsShiftKey && Key.Oem4 == e.Key) || (IsShiftKey && Key.Oem6 == e.Key) || (IsShiftKey && Key.Oem5 == e.Key)) && (validatorDefn as FormatValidatorDefinition).format == "packedascii"))
        {
           e.Handled = true;
        }
    }
7
Krushik

und auch:

wenn My.Computer.Keyboard.ShiftKeyDown dann ...

My.Computer.Keyboard.CtrlKeyDown

My.Computer.Keyboard.AltKeyDown

0
Rob

So gehe ich damit um (mit PreviewKeyDown), sagen wir, wir suchen nach Alt + R ...

private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
    if ((Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt)
       && e.SystemKey == Key.R)
    {
       //do whatever
    }
}

Vielleicht kann jemand aufklären, warum ich e.SystemKey und nicht nur e.Key verwenden musste, vielleicht aufgrund des Modifikators? Dies hat jedoch bei der Suche nach Modifikator + Schlüssel einwandfrei für mich funktioniert.

0
Josh