2011-02-08 4 views
2

.net 4 WPF KeyDownイベントハンドラの "add"キーを押したユーザを検出したいと思います。これを行うために、私は次のテストを使用します。Shift + 1をKey.Addとして検出

if (e.Key == Key.Add) 

ユーザーを押すが、(私のキーボードレイアウト上の「追加」に相当する)1 +シフトすると、このケースを検出しません。
これをどのように検出できますか?私はそれが別のキーボードレイアウト上の他の場所にマップすることができるよう

if (e.Key == Key.D1 && Keyboard.Modifiers == ModifierKeys.Shift) 

のテストが適切なソリューションであると確信していません。

提案がありますか?

+2

「Key.OemPlus」を試しましたか? –

+0

はい、Shift + 1を押すと起動しませんでしたが、起動しませんでした。 – Marc

+1

これは別のレイアウト上の他の場所にはっきりとマップされています:) addが機能しない場合は、単にキーが検出されたことをデバッガで確認し、キーを押したときにeventargsを調べます。たぶん、シフトが押されたかどうかをチェックするifブロックの中だけで中断して、簡単にすることができます。 –

答えて

0

KeyPressイベントハンドラを代わりに使用することをお勧めします。

0
private void trackBarFrames_KeyDown(object sender, KeyEventArgs e) 
{ 
    switch (e.KeyCode) 
    { 
     case Keys.Add : 
      // Nummeric Keypad Add 
      AddSomething(); 
      break; 
     case Keys.Oemplus : 
      // Regular keyboard Add 
      // OemPlus is assigned to the regular keyboard key with a "Add" Sign but doesn not take shift conditions in account..! 
      if (e.Modifiers == Keys.Shift) 
      { 
       AddSomething(); 
      } 
      break; 
    } 
} 
+0

このコードを説明するのに少し時間を取ることができますので、あとで読んでいる人がそれをよく理解してくれますし、その質問に対する答えは何ですか? –

関連する問題