C# NumLock钥匙锁定不工作

C# NumLock钥匙锁定不工作,c#,mdi,windowsformsintegration,C#,Mdi,Windowsformsintegration,我使用下面的代码来检查是否按下了NumLock、CapsLock或Insert,以及它们的状态是否为ON,并相应地更新标签的文本。但由于某些原因,我无法让NumLock正常工作。如果NumLock设置为on,则会使用“Num”更新标签文本,但如果NumLock设置为off,则无法更新。代码中的每一次检查都有效。非常感谢您的帮助。多谢各位 private void num_ins_caps_keyDown(object sender, KeyEventArgs e) {

我使用下面的代码来检查是否按下了NumLock、CapsLock或Insert,以及它们的状态是否为ON,并相应地更新标签的文本。但由于某些原因,我无法让NumLock正常工作。如果NumLock设置为on,则会使用“Num”更新标签文本,但如果NumLock设置为off,则无法更新。代码中的每一次检查都有效。非常感谢您的帮助。多谢各位

        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
事件,请尝试
keydup
事件

我测试了你的代码,也遇到了同样的问题。我不知道为什么它不能与
KeyDown
一起工作,但是当我将它附加到
keydup
事件时,它工作正常


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

如果我错过了你答案中的要点,请告诉我。按键的标准祸害。改为重写ProcessCmdKey()。