6

このやや不可解な状況で誰かが私を助けることができるかどうか疑問に思っていました. myFormWinForm アプリケーションで (ElementHost を使用せずに) モーダルに表示している WPF フォームがあります。デフォルトの WindowStyle を使用すると、すべて正常に動作し、タスクバーに表示されます。ただし、フォームをタスクバーに表示したり、最小化ボタンを含めたりしたくないため、次のことを行いました。

MyForm myForm = new MyForm();
myForm.ShowInTaskbar = false;
myForm.WindowStyle = System.Windows.WindowStyle.ToolWindow;
myForm.WindowStartupLocation =System.Windows.WindowStartupLocation.CenterOwner;
myForm.ShowDialog();

これで、wpf フォームが期待どおりにモーダルで最小化ボタンなしで表示されます。タスクバーで「親」の winform アプリケーションを選択すると、wpf フォームが消えて、そこに戻る方法がないようです! これは似ているが同じではない (純粋な WPF アプリケーション)を読んだので、メイン アプリが ALT + TAB メニューに表示されない理由を理解できますが、どうすれば wpf フォームに戻ることができるか教えてもらえますか?

前もって感謝します。

4

2 に答える 2

6

を使用するとWindowsInteropHelper、ホストされた WPF フォームを Winforms フォームを使用してラップし、その親を Winforms コントロールとして設定できます。これにより、WPF フォームが消えるのを防ぐことができます (dowhilefor と Hans Passant によっても指摘されています)。

例えば:

// Use the interop helper for the specified wpf window hosted by the win32 owner
WindowInteropHelper wih = new WindowInteropHelper(wpfForm);
wih.Owner = this.someWin32FormsControl.Handle;
于 2012-08-09T16:27:49.260 に答える