我有一些代码(应该是)捕获击键。顶层窗口有一个
Keyboard.PreviewKeyDown="Window_PreviewKeyDown"
子句,支持的CS文件包含:
private void Window_PreviewKeyDown(object sender, KeyEventArgs e) {
if (e.KeyboardDevice.Modifiers == ModifierKeys.Control) {
switch (e.Key) {
case Key.L:
btnPrev_Click(sender, new RoutedEventArgs());
e.Handled = true;
break;
case Key.R:
btnNext_Click(sender, new RoutedEventArgs());
e.Handled = true;
break;
}
}
}
现在工作正常,CTRLL和CTRLR都调用相关函数。
一旦我将Modifer检查更改为使用
ModifierKeys.Alt
,它将停止工作。换句话说,ALTL和ALTR都不调用函数。我在这里想念什么?
最佳答案
如果使用Alt
修饰符,则e.Key
返回Key.System
,而实键位于e.SystemKey
中。您可以使用以下代码来始终获得正确的按下键:
Key key = (e.Key == Key.System ? e.SystemKey : e.Key);
关于c# - PreviewKeyDown没有看到Alt修饰符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3099472/