7

WinFormsアプリケーションでビジネスエンティティを検査するためのHUDウィンドウを作成しています。

まったく異なるスタイルのウィンドウ(コンテンツ領域を最小化し、TitleBarのみを表示し、システムボタンを表示しないなど)が必要だったので、このためのWPFアプリケーションを作成しました。

問題は、このウィンドウをWinFormsアプリケーション内で「ライブ」にしたいことです。WPFをOwnedFormとして追加したり、メインフォームをWPFウィンドウの所有者として設定したりすることはできません。

では、どうすればこれを達成できますか?

編集:pstのおかげで私は答えを見つけました。スニペットは次のとおりです。

System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(_inspector);
WindowInteropHelper inspectorHelper = new WindowInteropHelper(_inspector);
inspectorHelper.Owner = this.Handle;
_inspector.Show();
4

1 に答える 1

6

WPFウィンドウには、Win32ウィンドウのハンドル/コンテキストがあります。

WindowInteropHelperを参照してください。これをWin32で使用して(またはWinFormsサポートがありますか?)、WPFウィンドウの所有者ウィンドウを設定できます。「ソースが初期化されました」(?)イベントまでハンドルが存在しないことに注意してください。

ただし、WinFormsだけを使用すると、必要なだけタイトルバーをカスタマイズできる場合があります(Win32を使用して図面自体を上書きでき、ここまで行かないとすべてのコントロールボックスが失われると思います)。

正しいキーワードを使用すると、このトピックに関するグーグルの結果がたくさんあります。

于 2010-06-29T16:56:29.097 に答える