Событие Windows.Form not fire keyDown

private void screensaverWindow_Load(object sender, System.EventArgs e)
{            
    this.BringToFront();            
    this.Focus();
    this.KeyPreview = true;
    this.KeyDown += new KeyEventHandler(onkeyDown);            
}        

onKeyDown() никогда не вызывается. Любая идея почему?

ИЗМЕНИТЬ: Это работает в режиме выпуска!? Я предполагаю, что это должен быть отладчик визуальной студии, где-то мешающий

Ответы

Ответ 1

Кажется, работает для меня:

public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
    this.BringToFront();
    this.Focus();
    this.KeyPreview = true;
    this.KeyDown += new KeyEventHandler(Form1_KeyDown);
}

void Form1_KeyDown(object sender, KeyEventArgs e)
{
    Console.WriteLine("test");
}

Существуют ли какие-либо дочерние элементы в вашей форме?

Ответ 2

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

Ответ 3

Как насчет меню, есть ли у вас меню со специальными клавишами быстрого доступа? У меня возникла проблема, когда скрытое контекстное меню фактически проглотило ключи cetain и не передавало их в какие-либо из событий ключа формы.