フォームの表示切替(補足)
前回メインフォームの表示切替の話をしましたが、少し説明というかイメージが足りませんでしたので補足します。
sasaki816.hatenablog.com
ここで説明されたメインフォームの入替で、ApplicationContextクラスのMainFormプロパティに設定したフォームがアプリケーション側が管理するフォームになります。
つまり、エントリポイントでApplication.Runメソッドで指定したフォームがForm1として、その後開いたフォームをForm2、Form3、Form4とすると以下のような図になります。当然この状態でForm1を閉じるとエントリポイントに処理が戻ってきてアプリケーションが終了します。その他のフォームを閉じても全く影響はありません。
ここで、Form2を開く際にApplicationContextクラスのメインフォームを入れ替えると、以下の図のように変化します。よってForm2を閉じるとエントリポイントに処理が戻ってきてアプリケーションが終了することになります。当然Form1を閉じてもアプリケーションが終了することはありません。
もしこれを全てVB6のような従来の方法(HideメソッドとShowDialog(Show)メソッド)で実現しようとすると、全てのフォームクローズイベント等でフォームの表示切替処理や管理処理を入れなければならず、またShowDialogの場合は開いたフォームのインスタンス破棄が必要になる場合があり、とても面倒なことになります。