2013-12-10 3 views
1

Я использую следующий код для проверки: NumLock, CapsLock или Insert нажаты, и если их статус включен, обновите текст ярлыка соответствующим образом. Но по какой-то причине я не могу заставить NumLock работать правильно. Он обновляет текст метки с помощью «Num», если NumLock установлен, но не обновляется, если NumLock установлен. Выполняется любая другая проверка кода. Поблагодарили бы за любую помощь. Спасибо.NumLock isKeyLocked не работает

 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; 
     } 
    } 
+0

Пожалуйста, дайте мне знать, если я пропустил отметку в вашем ответе. – paqogomez

+0

Стандартный бич KeyDown. Вместо этого переопределите ProcessCmdKey(). –

ответ

2

Я не уверен, где вы вызываете это с, но если вы используете KeyDown событие какого-нибудь элемента управления, попробуйте KeyUp событие вместо этого.

Я проверил ваш код и испытал ту же проблему. Я не знаю, почему он не работает с KeyDown, но он работал, как ожидалось, когда я привязал его к событию KeyUp.

Я предполагаю, что сигнал от Numlock поворота «на» отправляется до KeyDown пожаров событий, но сигнал от Numlock поворота «выключено» отправляются после KeyDown пожаров событий, поэтому выполняет код и все еще думает, что он включен. В объяснении поведения ничего нет в msdn docs.

 Смежные вопросы

  • Нет связанных вопросов^_^