既存のFormアプリへ機能追加しようとしていますが、これがどうも仕様的にWPFで作るのが簡単そうです。FormとWPFのヘテロなアプリって作れるの?単にWPFを呼び出せば良さそうな気がします。
プロジェクトにWPFのウィンドウを追加して。。。、と思ったら、そもそもFormアプリのプロジェクトだと、WPFのウィンドウって選択肢に出てきません。
なにかやり方がありそうなモノです。ちょっとググってみたらstackoverflowに分かりやすいのがありました。
既存のFormアプリのソリューションへWPFカスタムコントールライブラリのプロジェクトとして追加、呼び出せば良いようです。
以下、備忘のため具体的な方法を書いておきます。
1. WPFカスタムコントールライブラリの追加
ソリューションエクスプローラーで、ソリューションを選んで、右ボタンから[追加]-[新しいプロジェクト]で「WPF カスタムコントロール ライブラリ」を追加。
WPFのウィンドウを追加する。
2. 参照設定の追加
Formアプリのプロジェクトへ、作成したWPFカスタムコントロールライブラリのプロジェクトを参照へ追加。
参照設定へ以下のアセンブリを追加して、
PresentationCorePresentationFrameworkWindowsFormsIntegrationSystem.XamlWindowsBase ←参照先のサイトには書いていないけど、これも必要
usingディレクティブも忘れずに追加
using System.Windows.Forms.Integration;
3. Formアプリからの呼び出し
var wpfwindow = new WpfControlLib.Window1();ElementHost.EnableModelessKeyboardInterop(wpfwindow);wpfwindow.Show();
4. 動かしてみる
無事表示された。