2009-09-04 8 views
6

Unten ist der Code für Ctrl + F (aus einem anderen SO Post). Aber wie erkennen Sie eine Ctrl + ForwardSlash? oder Ctrl +/ (Anmerkung: divide nicht funktioniert)Wie erkennt man Strg - Vorwärts Schrägstrich in WinForm App

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

Der Control Modifier macht es wollen Frage statt Divide - zumindest auf US-Tastaturen. –

Antwort

9

Teile sollten funktionieren.

Für Ctrl + \:

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

Für Ctrl + /:

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

Aus irgendeinem Grund (nicht sicher, warum), wenn Sie Falle Ctrl + diese Schlüssel, sie sind auf die "shifted" keymapp Mapping iings.


Edit:

Ein Trick, um dies für die Suche, oder eine beliebige andere Taste. Legen Sie einen Haltepunkt für eine beliebige Zeile in dieser Methode fest und sehen Sie sich den Wert keyData an, wenn Sie die Taste drücken, die Sie fangen möchten. Ich empfehle, dies zu tun, ohne die Kontrolle zu übernehmen. Sie können dann reflector verwenden, um alle spezifischen Werte für Keys abzurufen und den "Schlüssel" mit dem entsprechenden Wert zu finden.

+0

hat nicht für mich funktioniert. Hinweis: Ich spreche von der/oben eingeben oder in der Nähe. Nicht auf dem Ziffernblock (wenn Sie auf dem Laptop sind). Eine einfache Möglichkeit, tatsächliche Tastencodes in einer Nachrichtenbox zu erfassen und dann mit numerischen Codes neu zu schreiben? – BuddyJoe

+0

@Tyndall: Ich habe das gerade getestet. Meine neue Antwort gibt Ihnen die richtige Antwort. –

+0

Auf meiner Tastatur ist der Backslash oben eingeben. – recursive

Verwandte Themen