Событие KeyDown не сработало - PullRequest
       18

Событие KeyDown не сработало

5 голосов
/ 16 октября 2011

У меня есть форма, которая просит пользователя нажать клавишу 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 Ответ

11 голосов
/ 16 октября 2011

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

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

...