ただし、多くの場合 (常にではありません)、子が閉じている場合、親は最小化されます
最小化されているわけではなく、別のアプリのウィンドウの後ろに消えています。デバッグ中の最も一般的な Visual Studio。ここでうまくいかないのは、Winforms がメイン ウィンドウを再度有効にする前に、フォームを破棄するのが早すぎることです。Windows ウィンドウ マネージャーは、フォーカスを与える別のウィンドウを探す必要があります。アプリのウィンドウはまだ無効になっているため、資格がないため、別のアプリのウィンドウが選択されます。そのウィンドウが十分に大きい場合 (「常にではない」場合)、それはあなたのウィンドウと重なって消え、最小化されたと思わせます。
これを解決するには、 ShowDialog が返された後にダイアログを破棄して、適切な方法で行います。これを行うには、常に Using ステートメントを使用します。定型コードは次のとおりです。
Using dlg = New YourDialogFormClass
If dlg.ShowDialog() = DialogResult.Ok Then
'' Use the dialog results
''...
End If
End Using '' <=== It gets disposed here