.NET中的Keyboard.IsKeyDown()返回不正确的值?

时间:2019-02-18 10:25:20

标签: c# wpf keyboard keypress

我在 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时,这会产生误导。

0 个答案:

没有答案