WindowsFormsHostとタブナビゲーション内でWinFormsフォームをホストするときに問題が発生しました。解決するために、私はこの簡単な例を作成しました:
- 作成されたWPF
Window(アプリの開始点) Form2つのWinFormを作成TextBoxしました- WPFウィンドウ:追加
WindowsFormsHostされました - WPFウィンドウ:
OnLoadedハンドラーを追加 - WPFウィンドウ:
Textbox下に配置を追加WindowsFormsHost
私が得たOnLoadedハンドラーで:
System.Windows.Forms.Form f = new WinFormsForm();
f.TopLevel = false;
f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.windowsFormsHost1.Child = f;
アプリケーションを実行すると、次のようになります。
- 何も焦点を当てていません(ok)
TextBoxの最初をクリックすると、WindowsFormsHostフォーカスが移動します(ok)- タブを押すと、フォーカスが(ok)
TextBoxの2番目に移動しますWindowsFormsHost - もう一度Tabキーを押すと、フォーカスが1番目に戻ります
TextBox(WindowsFormsHostOKではありませんWindowsFormsHost。WPFウィンドウの下部にあるテキストボックスにフォーカスを置いたままにしておく必要があります) - wpf(の前後に配置
WindowsFormsHost)のテキストボックスをクリックすると、フォーカスが取得されます(ok) - タブを押すと、フォーカスがの最初のテキストボックスに
WindowsFormsHost移動します。終了後に最初に移動するはずです。だからこれも大丈夫です - wpfテキストボックスをもう一度クリックしてShift+Tabキーを押すと、フォーカスが
WindowsFormsHost(ok)の2番目のテキストボックスに移動します。 - Tabキーを押すと、フォーカスが
WindowsFormsHost(WFHで始まる)の最初のテキストボックスに移動します(OKではありません)
1つのタイプのコントロールしかない場合のようにフォーカスを動作させるにはどうすればよいですか?この場合、WFH-1st-Textbox、WFH-2nd-Textbox、WPF-Textboxのタブ順序を意味します。