2013-05-21 16 views
7

Jaka jest różnica między KeyEventArgs.systemKey i KeyEventArgs.Key? Czy dobrze jest uwięzić kluczowe zdarzenie prasowe w klasie WPF Usercontrol, jak pokazano poniżej.Różnica między KeyEventArgs.systemKey i KeyEventArgs.Key

protected override void OnKeyDown(KeyEventArgs e) 
    { 
     base.OnKeyDown(e); 

     if(e.SystemKey == Key.LeftAlt || e.SystemKey == Key.LeftCtrl || e.SystemKey == Key.RightAlt) 
     { 
      this.Focus(); 
      CloseAnyOpenPopups(); 
     } 
    } 

Dzięki

Odpowiedz

6

Ponieważ klawisz Alt będą obsługiwane przez system przy użyciu e.SystemKey to jedyna możliwość, aby dowiedzieć się, czy został wciśnięty Alt. Właściwość Key po prostu zwróci Key.System.

Aby upewnić się zawsze uzyskać odpowiedni klucz można użyć tego wyrażenia:

Key key = (e.Key == Key.System ? e.SystemKey : e.Key);