2012-04-24 5 views
7

私ははCtrl +がヒットしますを入力したときに検出しようと を入力検出。 ので、私はこのコードを試してみました:それは動作しないようはCtrl +(WPFを使用して)

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

は明らかにこれは、正しくありません。 誰かが私を助けて正しい方法が何であるべきかを説明できますか?

ありがとう

答えて

12

明らかe.Keyが同じイベントに複数の異なる値に等しくすることができません。

あなたは、あなたが組み合わせを検出するのに役立ちますようにControlModifiersなどのプロパティを見つけることができますが、KeyEventArgsを使用してのイベントのうちの1つを処理する必要があります。

KeyPressEventArgsを使用するKeyPressイベントには、十分な情報がありません。


Drat、WPFはあなたに言いませんでした。 e.KeyboardDevice.Modifiersが必要なようです。

+1

ありがとう! 'e.KeyboardDevice.Modifiers'は私の考えを助けてくれるでしょう:) – Dante1986

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

これはたくさんのことです! – Dante1986

+0

もし私が助けてくれたら、私の喜び。 :) – Pank

+0

誰かが不思議であれば、実際の答えはここにあります。これは答えとしてマークされるべきです、最初は怠惰です。 – Yusha

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

それとも

if ((Char)e.KeyChar == '\n') 
      { 
      ///Code 
      } 
3
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter) 
関連する問題