it-swarm.com.de

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