Событие KeyUp не запускается, пока я не нажму ALT + Tab, а затем вернусь к моему приложению - PullRequest
2 голосов
/ 03 июня 2011

У меня очень странная проблема с формой Windows Forms.Как указано в заголовке, событие KeyUp вообще не запускается в приложении, пока я не нажму alt + tab из окна, затем вернусь.Неважно, где я нажимаю в приложении, прежде чем отключиться;ничего не происходит.

Кроме того, если я уберу alt-tab с приложения, но нажму на панель задач приложения, чтобы вернуться назад, я все равно не получу события KeyUp.Нажатие, затем alt-tabbing назад, снова делает событие KeyUp правильно.

Кажется, я получаю события KeyUp, только если я Alt-Tab TO приложения - но не в любом другом случае.

Свойство KeyPreview true.Я не делаю никакой другой обработки ключа в приложении - только в событии KeyUp.

Мне действительно нужно, чтобы это приложение могло реагировать на события KeyUp, особенно сразу после запуска - я не хочучтобы дать моим пользователям команду «alt-tab» убрать, а затем «назад» просто для правильного ввода с клавиатуры.Кто-нибудь видел эту проблему и нашел обходной путь?

Обновление: Я немного повозился с этим и нашел обходной путь - но это определенно клудж, и он мне не нравится.В переопределении OnShown для формы я добавил вызов this.Focus();.Я также добавил обработчик событий для this.LostFocus, который также вызывает this.Focus();.Это единственная форма в этом приложении, так что ничего из этого не является проблемой - я просто хотел бы понять, почему это происходит.= (Ах, хорошо.

Я добавил это как обновление вместо ответа, потому что, ну, это не ответ. Блеф.

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Возможно, это поможет: http://support.microsoft.com/kb/828964

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

0 голосов
/ 23 декабря 2011

Я закончил тем, что отказался от использования событий формы - теперь я регистрирую глобальную горячую клавишу Windows для последовательности клавиш, которую я хочу перехватить, и это работает просто отлично.В моем случае не имеет значения, что горячая клавиша является глобальной, поскольку мое приложение предназначено для использования только в этой системе.

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