WPF, на котором размещается WinForm, проблемы навигации по вкладкам

У меня возникли проблемы при размещении формы WinForms в WindowsFormsHost и навигации по вкладкам. Чтобы решить эту проблему, я сделал этот простой пример:

  • Создано WPF Окно (начальная точка приложения)
  • Создано WinForms Форма с двумя TextBox на нем.
  • Окно WPF: добавлено WindowsFormsHost к нему
  • Окно WPF: добавлен обработчик OnLoaded
  • Окно WPF: добавлено текстовое поле , расположенное под ] WindowsFormsHost

В обработчике OnLoaded я получил:

System.Windows.Forms.Form f = new WinFormsForm();
f.TopLevel = false;
f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.windowsFormsHost1.Child = f;

Теперь, когда я запускаю приложение:

  • Ничего не сфокусировано (хорошо)
  • Я нажимаю на первое TextBox в WindowsFormsHost , он получает фокус (хорошо)
  • Я нажимаю вкладку, фокус переходит на 2-е TextBox в WindowsFormsHost (ok)
  • Я снова нажимаю вкладку, фокус возвращается к 1-му TextBox в WindowsFormsHost ( not ok; следовало оставить WindowsFormsHost и переключить фокус на текстовое поле в нижней части окна WPF)
  • Я нажимаю на текстовое поле в wpf (помещается после и под WindowsFormsHost ) он получает фокус (хорошо)
  • Я нажимаю вкладку, фокус переходит в первое текстовое поле в WindowsFormsHost - так как оно должно переходить в начало после конца. Так что это тоже нормально
  • Я снова щелкаю текстовое поле wpf и нажимаю shift + tab, фокус переходит на второе текстовое поле в WindowsFormsHost (ok)
  • Я нажимаю вкладку, фокус переходит в первое текстовое поле в WindowsFormsHost (переходит в начало в WFH) ( не нормально)

Как заставить фокус вести себя так, как если бы у меня были элементы управления только одного типа? Это означает порядок табуляции для WFH-1st-Textbox, WFH-2nd-Textbox, WPF-Textbox в данном случае.

13
задан ZoolWay 4 May 2011 в 09:10
поделиться