WindowsFormsHost
とタブナビゲーション内でWinFormsフォームをホストするときに問題が発生しました。解決するために、私はこの簡単な例を作成しました:
- 作成されたWPF
Window
(アプリの開始点) Form
2つの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
(WindowsFormsHost
OKではありません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のタブ順序を意味します。