Событие нажатия клавиши не запущено

#c# #events #taskbar #keydown

#c# #Мероприятия #панель задач #нажатие клавиши

Вопрос:

У меня есть форма, которая просит пользователя нажать Q клавишу 3 раза. Когда он это сделает, форма исчезнет (именно поэтому я использую форму без полей, чтобы предотвратить попадание в X-Button ). Сама форма не является модальной.

Это код, который я использую для обработки KeyDown события:

 private void ConfirmForm_KeyDown_1(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Q)
    {
        if (  count == 3)
            this.Close();
    }
}
  

Теперь я не хочу иметь дополнительный элемент для этой формы на панели задач, поэтому я установил для ShowInTaskbar свойства значение false . Проблема в том, что KeyDown событие больше не запускается, когда форма не отображается на панели задач — когда это так, все работает просто отлично.

Кто-нибудь знает, как я могу исправить эту ошибку?

Ответ №1:

Для свойства KeyPreview формы должно быть установлено значение True, чтобы форма получала ключевые события, когда в форме есть другие элементы управления, которые могут получать фокус.

Редактировать: Кроме того, если вы хотите предотвратить нажатие кнопки X, вы можете установить для ControlBox значение False, которое скрывает кнопки в строке заголовка.