2012-04-24 88 views
7

(使用WPF) 我試圖檢測何時Ctrl + 輸入被擊中。 所以我想這代碼:檢測Ctrl + Enter

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

顯然,這是不正確的,因爲它不工作。 任何人都可以幫助我,解釋什麼是正確的方式?

感謝名單

回答

12

e.Key顯然可以不等於在相同的事件多於一個的不同的值。

您需要處理其中一個使用KeyEventArgs的事件,您會發現諸如ControlModifiers之類的屬性,它們將幫助您檢測組合。

使用KeyPressEventArgsKeyPress事件只是沒有足夠的信息。


Drat,你說WPF不是你。它看起來像你需要e.KeyboardDevice.Modifiers

+1

感謝名單! 'e.KeyboardDevice.Modifiers'應該幫助我,我想:) – Dante1986 2012-04-24 06:50:51

6

我想你需要一個SpecialKey Handler。 我一派有點找到了解決辦法here.

繼從稱作鏈接代碼可以解決你的問題:

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

thanx很多這一個! – Dante1986 2012-04-24 07:49:02

+0

我的榮幸,如果我有任何幫助。 :) – Pank 2012-04-25 04:51:55

+0

實際的答案在這裏,如果有人想知道。這應該被標記爲答案,第一個只是懶惰。 – Yusha 2017-03-02 15:33:28

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

或者

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