2009-08-14 11 views

Odpowiedz

19

Zakładając, że nadal jesteś w obsługi zdarzeń myszy, można sprawdzić wartość Keyboard.Modifiers. Nie sądzę, że istnieje jakikolwiek sposób uzyskania informacji o modyfikatorze z samego zdarzenia, więc musisz przesłuchać klawiaturę bezpośrednio.

+3

Jak irytujące ... jeśli dobrze rozumiem, oznacza to, że jeżeli użytkownik puszcza klawiaturze między czasem, że zdarzenie myszy jest zwolniony, a podczas obsługi zdarzenia przesłuchuje klawiaturę, będzie wykrywać nieprawidłowe stany kluczowych. –

+1

@ M.Dudley Nie ma znaczenia, czy przechwycisz stan klawiatury czy WPF ... mysz i klawiatura są rozłączne, więc warunki wyścigu są nieuniknione. –

16

Jak na odpowiedź Andy'ego, należy użyć Keyboard.Modifiers. Pomyślałem, że mogę napisać mały przykład

coś takiego w swojej obsługi zdarzeń powinno działać:

private void MyExampleButton_Click(object sender, RoutedEventArgs e) 
{ 
    if ((Keyboard.Modifiers & ModifierKeys.Control) > 0) { 
     System.Diagnostics.Debug.WriteLine("Control is pressed"); 
    } else { 
     System.Diagnostics.Debug.WriteLine("Control is NOT pressed"); 
    } 
} 

Pozdrowienia, Mike

Powiązane problemy