他の 2 つのフォームの上に配置する必要があるフォームがあります。また、上にある 2 つのフォームのいずれかで最小化する必要があります。これは説明どおりに機能することがわかりました
form.Show(null);
ただし、form.Show()
説明どおりに機能しません。なんで?パラメータとして所有者を渡していることに気付きましたが、所有者が null です。では、なぜフォームは正しく動作するのでしょうか?
Show()はControlクラスのメソッドであり、Show(IWin32Window)はFormクラスのメソッドであることに注意してください。これは、Show(IWin32Window)メソッドの組み込み動作です。所有者がnullの場合、アクティブなウィンドウが所有者として使用されます。Control.Show()にはOwnerの概念はありません。MSリファレンスソースまたはデコンパイラを介して確認できます。
IntPtr hWndActive = UnsafeNativeMethods.GetActiveWindow();
IntPtr hWndOwner = owner == null ? hWndActive : Control.GetSafeHandle(owner);
所有者ウィンドウとしてnullを渡すと、Show(owner)メソッドのオーバーロードが強制的に所有者を検索します。アクティブなウィンドウを選択します。それは通常あなたが望むものですが、常にではありません。その運命の輪を回す正当な理由はいくつかあります。
質問の「show()が機能しない」の部分がわかりません。引数なしでShow()を呼び出すと、フォームには所有者がなくなります。