2013-06-14 9 views
5

Chcę rozpoznać naciśnięcia klawiszy w moim sterowaniu. Do tego używam Zdarzenia KeyDown. Rodzaj klawiszy, które chcę wykryć, to coś w rodzaju CTRL + A lub CTRL + C i tak dalej. (Tak więc kombinacje klawiszy multiblokowych)Klucze zdarzeń Multimedialne C# KeyDown oraz ControlKey

Teraz dokonałem reedycji KeyEventArgs i znalazłem Enum. (Wszystko działa idealnie po prostu użyj | i &, aby połączyć i znaleźć właściwe klucze) Przykładem może być Shift + A, a następnie wartość klucza Enum jest: ShiftKey | Shift |

ALE

Gdy próbuję go klawiszem sterowania wciśnięty (tak Control + A) Mam 131137 jako odpowiedź? I nie wiem dokładnie dlaczego nie mam czegoś takiego jak ControlKey | Kontrola | A (lub coś w tym stylu)

Zauważyłem, że jeśli spróbuję z Aist 131137 z B ist 131138 z C ist 131139 i tak dalej ... Myślę, że możliwe jest obliczenie klucza, ale myślę, że powinno być lepsze rozwiązanie niż po prostu coś takiego?

131.137 - 131.072 = 65 (dla)

Mam rację, czy jest to prevered rozwiązanie, czy mogę missunderstand kilka podstawowych?

pozdrawiam

+0

To pytanie może być pomocne http://stackoverflow.com/questions/400113/best-way-to-implement-keyboard- skróty w oknach-formularze-aplikacja – unlimit

Odpowiedz

2

131072 == (int) Keys.Control

więc

131137 (100000000001000001 plik binarny) == (i nt) (Keys.Control | Keys.A)

i można umieścić coś takiego

private void myControl_KeyDown(object sender, KeyEventArgs e) { 
    if (e.KeyData == (Keys.A | Keys.Control)) { 
     ... 
    } 
+0

Teraz jest dla mnie jasne, dlaczego 131137 jest wynikiem :) – Bador

Powiązane problemy