我正在使用WPF KeyDown
事件。当我按 Ctrl + F1 时,能否解释为什么这种情况属实?当我按 F1 时, Ctrl 已被按下,因此!Keyboard.IsKeyDown(Key.LeftCtrl)
应为false。
修改
在下面的代码中,如果按 Ctrl + F1 ,两个消息都会触发。但是如果你改变这两个if语句的顺序,只有" ctrlF1"消息会像它应该的那样触发。我想解释这种奇怪的行为。
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.F1 && Keyboard.IsKeyDown(Key.LeftCtrl))
{
MessageBox.Show("ctrlF1");
}
if (e.Key == Key.F1 && !Keyboard.IsKeyDown(Key.LeftCtrl))
{
MessageBox.Show("F1");
}
}
答案 0 :(得分:2)
区别如下:
journal
)为真。执行到第二个if语句并且两个条件都为真。显示MessageBox并执行停止,直到MessageBox关闭。不同之处在于:在调用处理程序之前评估 F1 键的按下,但是在执行代码行时,会立即评估检查e.Key == Key.F1