2012-04-24 8 views
7

(utilizzando WPF) cerco di rilevare quando Ctrl +Enter viene colpita. così ho provato questo codice:rilevare Ctrl + Invio

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

Ovviamente questo non è corretto, in quanto non funziona. Qualcuno potrebbe aiutarmi, spiegando quale dovrebbe essere la strada giusta?

thanx

risposta

12

Ovviamente e.Key non può essere pari a più di un valore differente nello stesso evento.

È necessario gestire uno degli eventi che utilizza KeyEventArgs, lì troverai proprietà come Control e Modifiers che ti aiuteranno a rilevare le combinazioni.

L'evento KeyPress, che utilizza KeyPressEventArgs, non ha informazioni sufficienti.


Drat, hai detto che WPF non eri tu. Sembra che tu abbia bisogno di e.KeyboardDevice.Modifiers.

+1

Grazie! 'e.KeyboardDevice.Modifiers' dovrebbe aiutarmi a pensare :) – Dante1986

6

Penso che sia necessario un gestore SpecialKey. Googled un po 'una trovata una soluzione here.

seguito il codice dal link di cui può risolvere il 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

grazie mille per questo! – Dante1986

+0

piacere mio, se fossi stato di qualche aiuto. :) – Pank

+0

La risposta effettiva è qui se qualcuno si sta chiedendo. Questo dovrebbe essere contrassegnato come risposta, il primo è solo pigro. – Yusha

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

O

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