我在 WPF 中为RichTextBox
设置了事件:
_window._richTextBox.PreviewKeyDown += _richTextBox_PreviewKeyDown;
然后在_richTextBox_PreviewKeyDown
中,我得到有关键盘上当前按下的键的信息:
bool isAltPressed = Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt);
bool isCtrlPressed = Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl);
bool isShiftPressed = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift);
然后我只按键盘上的“ RightAlt”键。
第一次遇到_richTextBox_PreviewKeyDown
中的断点
isAltPressed = false
isCtrlPressed = true
(因为Keyboard.IsKeyDown(Key.LeftCtrl)
返回true
)和isShiftPressed = false
。
仅在第二次击中断点之后
`isAltPressed = false`
有人可以向我解释这种奇怪的行为吗?
是否可以通过某种方式检查键盘上的“真实”按键?最后,当我在键盘Keyboard.IsKeyDown(Key.LeftCtrl) = true
上按Right Alt时,这会产生误导。