2009-06-26 2 views
0

У меня есть приложение с простой формой окна, на которое я поставил пользовательский элемент управления для моей конкретной задачи, я написал обработчик KeyDown для формы, проблема в том, что обработчик KeyDown отлично работает с каждым ключом, кроме клавиш со стрелками ... Элемент управления не входит в обработчик ключей? почему это так? когда я удаляю пользовательский элемент управления, он начинает работать нормально?У меня возникла проблема с захватом событий клавиатуры в C#

+0

где текущий фокус, который управляет им? – Fredou

ответ

1

Посмотрите на this SO question.

Есть ли KeyPreview? Какой контроль имеет фокус?

+0

Да KeyPreview включен для формы, и мой пользовательский элемент управления имеет фокус, но почему он не захватывает только клавиши со стрелками? он отлично работает со всеми другими ключами, я заметил, что событие KeyUp уволено, но не keydown .... – 2009-06-26 12:50:44

+0

Вы перешли по ссылке? Имеется ли в вашем пользовательском элементе текстовое поле? – stevehipwell

0

Я не вижу причины, по которой форма не просматривается клавишами со стрелками. Но в любом случае, если вам нужен более низкий уровень доступа к обработке клавиатуры (в частности, обработка ярлыков), вы можете переопределить форму ProcessCmdKey.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Left) 
    { 
     // your code here 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
0

Вы должны сосредоточиться где-нибудь в коде, чтобы правильно использовать ProcessCmdKey.

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