Запретить обработку события KeyDown до следующей формы - PullRequest
0 голосов
/ 18 июня 2009

HI, У меня есть форма в приложении C #. В этой форме я фиксирую событие KeyDown Alt + U, которое открывает вторую форму. Во второй форме у меня есть toolStripButton с сочетанием клавиш Alt + U (тот же, который я использовал для открытия формы), который печатает документ. Теперь моя проблема в том, что когда я открываю вторую форму, она автоматически запускает событие нажатия на кнопку toolstripbutton, так как она имеет тот же ярлык, который использовался для открытия формы. Как я могу предотвратить это?

С уважением, Йохан

Ответы [ 4 ]

0 голосов
/ 18 июня 2009

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

Опять не самое элегантное решение, но должно быть достойное решение.

0 голосов
/ 18 июня 2009

Не проще ли поменять ярлык одного на другой? Я согласен с BFree, его не самый лучший дизайн имеет один и тот же ярлык для 2 совершенно разных функций. Все сочетания клавиш / клавиши ускорения должны быть уникальными.

Почему бы не изменить ярлык для страницы формы, изменив что-то вроде:

Ctrl + Right (Перейти к следующей странице) Ctrl + Left (Перейти на предыдущую страницу)

0 голосов
/ 18 июня 2009

Во второй форме у вас вместо этого есть ToolStripMenuItem? (ToolStripButton не имеет свойства ShortcutKeys).

Вы создаете новую форму, когда пользователь нажимает Alt-U в родительской форме?

Проверяли ли вы объект отправителя в обработчике, который печатает документ, чтобы узнать, была ли это родительская форма?

Не могу воспроизвести вашу проблему; небольшое объяснение поможет.

0 голосов
/ 18 июня 2009

Это не отвечает на ваш вопрос, но вы действительно должны подумать о создании двух разных сочетаний клавиш для этих двух совершенно разных действий. Наличие двух идентичных сочетаний клавиш, которые выполняют два совершенно разных действия, очень запутывает IMO.

Однако, чтобы ответить на ваш вопрос, у меня было бы какое-то свойство во второй форме, например "ShouldRaise" или что-то подобное, и я бы вызывал событие Alt + U во второй форме, только если этот флаг равен true. Сначала установите значение false, но затем в KeyUp в первой форме установите значение true.

...