2011-07-04 34 views
0

我在第1页中的“的OnNavigatedTo”的方法我如何知道用户是否按下按钮Ctrl + K?

page1.keyEventHandler += (s, k) => 
{ 
    if(k.Key == Key.P) 
    { 
      // Do Something ... 
    } 
} 

定义,但我需要知道,如果用户在两个键压在一起......我需要知道,如果用户 上按下的键。 Ctrl + Key.P

我该怎么办?

谢谢

回答

2

在这里你去:

page1.keyEventHandler += (s, k) => { 

    if (Keyboard.Modifiers == ModifierKeys.Control && k.Key == Key.P) { 
    ... 
    } 
} 
1

不幸的是没有这样做的好方法。你需要发射2个事件。其中每个键,like so

private bool KeyADown = false; 
private bool KeyBDown = false; 

private void LayoutRoot_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.A) 
    { 
     KeyADown = true; 
    } 
    else if (e.Key == Key.B) 
    { 
     KeyBDown = true; 
    } 

    // check for Ctrl+A+B 
    if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) 
    { 
     if (KeyADown && KeyBDown) 
     { 
      MessageBox.Show("Ctrl+A+B detected"); 
     } 
    } 
} 

private void LayoutRoot_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.A) 
    { 
     KeyADown = false; 
    } 
    else if (e.Key == Key.B) 
    { 
     KeyBDown = false; 
    } 
} 
+0

我相信楼主只是想检测CTRL +组合键,而不是一个完整的密钥和弦,所以我的解决办法应该就够了。否则这种方法很好。 – Palantir

相关问题