我在'OnNavigatedTo'方法的页面1中定义了这个
page1.keyEventHandler += (s, k) =>
{
if( k.Key == Key.P )
{
// Do Something ...
}
}
但我需要知道用户是否同时按下两个键...我需要知道用户是否 按下Key.Ctrl + Key.P
我该怎么办?
谢谢
答案 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;
}
}