Я устанавливаю событие для моего RichTextBox
в WPF :
_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`
Может ли кто-нибудь объяснить мне такое странное поведение?Можно ли как-то проверить «настоящие» нажатые клавиши на клавиатуре?Наконец, когда я нажимаю правую клавишу Alt на клавиатуре Keyboard.IsKeyDown(Key.LeftCtrl) = true
, что вводит в заблуждение.