检测KeyRoutedEventArgs事件中是否按下了修改键

我有以下代码:

public void tbSpeed_KeyDown(object sender, KeyRoutedEventArgs e) { e.Handled = !((e.Key >= 48 && e.Key = 96 && e.Key <= 105) || (e.Key == 109) || (e.Key == 189)); } 

有没有办法检测是否正在按任何修改键如Shift?

使用GetKeyState 。 例如

 var state = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Shift); return (state & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down; 

注意 :对于Alt,您将使用VirtualKey.Menu。

对于Win10 UWP,我注意到CTRL和SHIFT键设置为Locked状态。 所以我做了以下事情:

 var shiftState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Shift); var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control); var isShiftDown = shiftState != CoreVirtualKeyStates.None; var isCtrlDown = ctrlState != CoreVirtualKeyStates.None; 

您可以尝试以下代码

 CoreVirtualKeyStates controlKeyState = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control); var ctrl = (controlKeyState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down; CoreVirtualKeyStates shiftKeyState = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift); var shift = (shiftKeyState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down; 

使用Shift键的键盘的Bitwise AND Modifiers属性 –

 bool isShiftKeyPressed = (Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift; 

试试这个 –

 bool isShiftKeyPressed = (ModifierKeys & Keys.Shift) == Keys.Shift; 

要么

 Control.ModifierKeys == Keys.Shift