我有以下代码(不起作用):
private void Window_PreviewKeyDown(object sender, KeyEventArgs e) {
e.Handled = true;
if ((e.Key == Key.P) && (Keyboard.Modifiers == ModifierKeys.Alt)) {
MessageBox.Show("Thanks!");
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?事件正在解雇,但是
(e.Key == Key.P) && (Keyboard.Modifiers == ModifierKeys.Alt))
Run Code Online (Sandbox Code Playgroud)
永远不会评估为真.我的类似事件使用Ctrl而不Alt是以这种方式工作.我的活动也包括Ctrl 和 Alt工作.
在 WPF 中使用按键的更好方法是按键手势
例如,请注意,这是一个示例,而不是解决方案
<Window.InputBindings>
<KeyBinding Command="ApplicationCommands.Open" Gesture="ALT+P" />
</Window.InputBindings>
Run Code Online (Sandbox Code Playgroud)
还有更多的事情要做,但你会很容易地完成它。这就是 WPF 处理键的方式!
PK:-)