質問: タイトルの件、親画面としてユーザ認証画面を最初に起動し、 認証が問題なければ、子画面としてメニュー画面を表示し、親画面であるユーザ認証画面を閉じる 処理を検討しています。 親画面であるユーザ認証画面を閉じても、子画面であるメニュー画面をそのまま表示させたい場合、 子画面であるメニュー画面をSystem.Diagnostics.Process.start()で別スレッドとして 起動する方法以外に何か方法はありますでしょうか? ご教示よろしくお願いいたします。
回答: `Program.cs`の`Main()`メソッドには ``` Application.Run(new Form1()); ``` のように記述されていると思います。`Application.Run(Form)`.aspx)は引数に渡された`Form`を表示し、その`Form`が閉じられた時点で終了します。この方法では質問のようにダイアログを切り替えるには都合が悪いです。 この場合`Application.Run(ApplicationContext)`.aspx)という別バージョンを使うとうまくいきます。こちらは`ApplicationContext.MainForm`.aspx)が閉じられるまで終了されず、また`ApplicationContext.MainForm`は途中で変更可能です。ですので閉じる前にこのプロパティを書き換えればプログラムは終了しません。 イメージとしては * 最初は`ApplicationContext.MainForm`としてユーザ認証画面を設定しておく * `Application.Run(ApplicationContext)`を実行する(ユーザ認証画面が表示される) * 認証に成功したら 1. メニュー画面を表示する 2. `ApplicationContext.MainForm`を1.のメニュー画面に書き換える 3. ユーザ認証画面を閉じる * 認証に諦めたら、ユーザ認証画面を閉じる(プログラムが終了される) * メニュー画面が閉じられる(プログラムが終了される) という具合でしょうか。もちろん、同様の手順でメニュー画面からユーザ認証画面に戻ることもできます。