2012-04-24 23 views
7

(usando WPF) i tratar de detectar cuando Ctrl +Introduzca es golpeado. así que probamos este código:detectar Ctrl + Enter

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

Obviamente, esto no es correcta, ya que no funciona. ¿Alguien podría ayudarme, explicándome cuál debería ser el camino correcto?

Gracias

Respuesta

12

Obviamente e.Key no puede ser igual a más de un valor diferente en el mismo evento.

Debe controlar uno de los eventos que utiliza KeyEventArgs, allí encontrará propiedades como Control y Modifiers que le ayudarán a detectar combinaciones. El evento KeyPress, que usa KeyPressEventArgs, simplemente no tiene información suficiente.


Drat, dijiste que WPF no. Parece que necesita e.KeyboardDevice.Modifiers.

+1

Gracias! 'e.KeyboardDevice.Modifiers' debería ayudarme, creo :) – Dante1986

6

Creo que necesita un controlador SpecialKey. Googled un poco una encontrado una solución here.

siguiente código desde el enlace mencionado puede resolver su problema:

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

¡muchas gracias por este! – Dante1986

+0

mi placer, si hubiera sido de alguna ayuda. :) – Pank

+0

La respuesta real está aquí si alguien se está preguntando. Esto debe marcarse como respuesta, el primero es simplemente flojo. – Yusha

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

O

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