如何知道用户是否按下Ctrl + K按钮?

时间:2011-07-04 11:03:41

标签: silverlight

我在'OnNavigatedTo'方法的页面1中定义了这个

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

但我需要知道用户是否同时按下两个键...我需要知道用户是否 按下Key.Ctrl + Key.P

我该怎么办?

谢谢

2 个答案:

答案 0 :(得分:2)

你走了:

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

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

答案 1 :(得分: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;
    }
}