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