7

(WPF を使用) Ctrl+Enterがいつヒットしたかを検出しようとします。だから私はこのコードを試しました:

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

機能しないため、明らかにこれは正しくありません。正しい方法がどうあるべきかを説明して、誰かが私を助けてくれますか?

ありがとう

4

4 に答える 4

15

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

を使用するイベントの 1 つを処理する必要がKeyEventArgsあります。そこには、ControlやなどのプロパティがありModifiers、組み合わせを検出するのに役立ちます。

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


Drat、あなたは WPF だと言いましたね。が必要なようですe.KeyboardDevice.Modifiers

于 2012-04-24T06:31:50.207 に答える
8

SpecialKey Handler が必要だと思います。ここで解決策を見つけました

参照されたリンクの次のコードは、問題を解決する可能性があります。

  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");
    }
}
于 2012-04-24T06:55:04.443 に答える
4
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter)
于 2015-02-15T02:03:13.313 に答える