2012-04-24 8 views
7

(mit WPF) ich versuche zu erkennen, wenn Ctrl + Enter getroffen wird. so habe ich versucht, diesen Code:erkennen Strg + Enter

if (e.Key == Key.Return && (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl)) 
{ 
    //Do Something    
} 

Offensichtlich ist dies nicht korrekt ist, da es nicht funktioniert. Kann mir jemand helfen und erklären, was der richtige Weg sein sollte?

thanx

Antwort

12

Offensichtlich e.Key kann nicht mehr als ein anderer Wert in der gleichen Veranstaltung gleich sein.

Sie müssen eines der Ereignisse behandeln, das KeyEventArgs verwendet, dort finden Sie Eigenschaften wie Control und Modifiers, die Ihnen helfen, Kombinationen zu erkennen.

Das Ereignis KeyPress, das KeyPressEventArgs verwendet, hat nur nicht genügend Informationen.


Drat, du hast gesagt WPF hast du nicht. Es sieht so aus, als ob Sie e.KeyboardDevice.Modifiers benötigen.

+1

thanx! 'e.KeyboardDevice.Modifiers' sollte mir helfen, denke ich :) – Dante1986

6

Ich denke, dass Sie einen SpecialKey Handler benötigen. Ich googeln ein bisschen fand eine Lösung here.

folgenden Code aus dem genannten Link kann Ihr Problem lösen:

void SpecialKeyHandler(object sender, KeyEventArgs e) 
{ 
    // Ctrl + N 
    if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.N)) 
    { 
     MessageBox.Show("New"); 
    } 

    // Ctrl + O 
    if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.O)) 
    { 
     MessageBox.Show("Open"); 
    } 

    // Ctrl + S 
    if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.S)) 
    { 
     MessageBox.Show("Save"); 
    } 

    // Ctrl + Alt + I 
    if ((Keyboard.Modifiers == (ModifierKeys.Alt | ModifierKeys.Control)) && (e.Key == Key.I)) 
    { 
     MessageBox.Show("Ctrl + Alt + I"); 
    } 
} 
+0

vielen Dank für diesen! – Dante1986

+0

mein Vergnügen, wenn ich irgendwie geholfen hätte. :) – Pank

+0

Aktuelle Antwort ist hier, wenn jemand sich fragt. Dies sollte als Antwort markiert werden, zuerst ist nur faul. – Yusha

0
if (e.KeyChar == 10) 
      { 
      ///Code 
      } 

Oder

if ((Char)e.KeyChar == '\n') 
      { 
      ///Code 
      } 
3
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter)