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