Ловушка ввода с клавиатуры в элементе управления WindowsFormsHost в WPF - PullRequest
3 голосов
/ 20 июня 2010

У меня есть элемент управления ActiveX внутри пользовательского элемента управления WinForms. Моему приложению WinForms это нравится!

Теперь, переходя к WPF, я использую пользовательский элемент управления в элементе управления WindowsFormsHost. Прекрасно работает ..., но я хочу рассматривать этот элемент управления как один элемент, чтобы пользователь мог аккуратно нажимать TAB поверх существующих элементов управления WPF И этого пользовательского элемента управления NOT, чтобы «войти внутрь». то есть просто относиться к нему как к одному элементу управления, как и ко всем остальным.

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

Я не мог найти что-либо об этом во многих книгах WPF и в сети. Кто-нибудь может предложить способ?

Спасибо, Джек.

1 Ответ

0 голосов
/ 09 января 2012

Разве вы не можете создать какой-то фильтр, сделав мышью предварительного просмотра на панели или в окне (независимо от того, кто является родительским элементом ваших элементов управления), таким образом панель будет ловить его перед пользовательским элементом управления, и вы должны установить e.handled to true, и если пользовательский элемент управления вызвал событие tab, продолжайте нажимать фокус, пока не получите другой элемент управления.Предварительный просмотр и e.Handled = ture должны решить проблему.

...