Windows.Form не запускает событие keyDown - PullRequest
15 голосов
/ 26 июля 2010
private void screensaverWindow_Load(object sender, System.EventArgs e)
{            
    this.BringToFront();            
    this.Focus();
    this.KeyPreview = true;
    this.KeyDown += new KeyEventHandler(onkeyDown);            
}        

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

РЕДАКТИРОВАТЬ : Это работает в режиме выпуска !?Я предполагаю, что это должен быть визуальный студийный отладчик, вмешивающийся где-то

Ответы [ 3 ]

56 голосов
/ 26 января 2012

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

12 голосов
/ 26 июля 2010

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

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");
}

Есть ли какие-либо дочерние элементы управления в вашей форме?

0 голосов
/ 27 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...