2009-09-04 10 views
6

Poniżej znajduje się kod dla Ctrl + F (z innego wpisu SO). Ale w jaki sposób można wykryć Ctrl Ctrl ForwardSlash ForwardSlash? lub Ctrl + / (uwaga: podział nie działa)Jak wykrywać Ctrl - Forward Slash w aplikacji WinForm

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     if (1 == 1) //keyData == (Keys.Control | Keys.F)) 
     { 
      MessageBox.Show("What the Ctrl+F?"); 
      return true; 
     } 
     return base.ProcessCmdKey(ref msg, keyData); 
    } 
+0

Modyfikator kontroli sprawia, że ​​chce Pytanie zamiast podziału - przynajmniej na klawiaturach US. –

Odpowiedz

9

Divide powinny działać prawidłowo.

Dla Ctrl + \:

if (keyData == (Keys.Control | Keys.OemPipe)) 

Dla Ctrl + /:

if (keyData == (Keys.Control | Keys.OemQuestion)) 

Z jakiegoś powodu (nie wiem dlaczego), kiedy pułapka Ctrl + te klucze, odwzorowują na "przesuniętą" klawiaturę klawiszy rządy.


Edit:

Jeden trick na znalezienie tego, lub dowolny inny klawisz. Ustaw punkt przerwania w dowolnej linii w tej metodzie i spójrz na wartość keyData po naciśnięciu klawisza, który chcesz przechwycić. Polecam robić to bez uderzania kontroli. Następnie możesz użyć reflektora, aby uzyskać wszystkie określone wartości dla Keys i znaleźć "klucz" z odpowiednią wartością.

+0

nie działa dla mnie. uwaga: mówię o/powyżej wprowadź lub w pobliżu. Nie na klawiaturze numerycznej (jeśli korzystasz z laptopa). Każdy prosty sposób na przechwytywanie rzeczywistych kodów kluczy w skrzynce, a następnie przepisywanie przy użyciu kodów numerycznych? – BuddyJoe

+0

@Tyndall: Właśnie to przetestowałem. Moja nowa odpowiedź da ci właściwą odpowiedź. –

+0

Na mojej klawiaturze lewy ukośnik znajduje się powyżej klawisza Enter. – recursive

Powiązane problemy