NumLock isKeyLocked not working



我使用以下代码来检查是否按下了NumLock、CapsLock或Insert,如果它们的状态为ON,则相应地更新标签的文本。但由于某种原因,我无法使NumLock正常工作。如果NumLock设置为打开,它会用"Num"更新标签的文本,但如果NumLock被设置为关闭,则无法更新。代码中每隔一次检查都有效。如果有任何帮助,我将不胜感激。非常感谢。

        private void num_ins_caps_keyDown(object sender, KeyEventArgs e)
    {
        if ((e.KeyCode & Keys.KeyCode) == Keys.CapsLock)
        {
            if (Control.IsKeyLocked(Keys.CapsLock))
                num_ins_caps1.capsLabel.Text = "Caps";
            else
                num_ins_caps1.capsLabel.Text = null;
        }
        if ((e.KeyCode & Keys.KeyCode) == Keys.NumLock)
        {
            if (Control.IsKeyLocked(Keys.NumLock))
                num_ins_caps1.numLabel.Text = "Num";
            else
                num_ins_caps1.numLabel.Text = null;
        }
        if ((e.KeyCode & Keys.KeyCode) == Keys.Insert)
        {
            if (Control.IsKeyLocked(Keys.Insert))
                num_ins_caps1.insLabel.Text = "Ins";
            else
                num_ins_caps1.insLabel.Text = null;
        }
    }

我不确定您从哪里调用它,但如果您使用某个控件的KeyDown事件,请尝试KeyUp事件。

我测试了你的代码,遇到了同样的问题。我不知道为什么它不适用于KeyDown,但当我将它附加到KeyUp事件时,它如预期那样工作。

我假设Numlock打开"on"的信号是在KeyDown事件触发之前发送的,但Numlock关闭"off"的信号却是在KeyDown事件触发之后发送的,因此代码执行并仍然认为它已启用。msdn文档中没有任何内容可以解释这种行为。

相关内容

  • 没有找到相关文章

最新更新