私がやりたいこと:
->MDIフォームを開く
->プロジェクトのメインフォームを閉じる
->アプリケーションを閉じずに
私がしたこと:
frmMain fm = new frmMain();
fm.Show();
this.Close()
どんな助けでもいただければ幸いです!:)
Hideメソッドを使用できます。
これを試してみてください:
frmMain fm = new frmMain();
this.Hide();
fm.Show();
または:
frmMain fm = new frmMain();
this.Hide();
fm.ShowDialog();
this.Show();
後者はウィンドウを開き、閉じると前のウィンドウが再び表示されます。
これを回避するために私がしたことは次のとおりです。
this.Hide()
おそらくこれを行うための最良の方法ではありませんが、それでも。
電話することでそれを取り戻すことさえできます
this.Show()
実際にメインフォームを閉じたいが、アプリケーションを実行したままにしておきたい場合は、デフォルトのクラスでアプリケーションコンテキストを起動させることができます。
using(MyContext myContext = new MyContext())
{
Applicaton.Run(myContext);
}
ここで、MyContext
から継承しApplicatonContext
ます。
その後、アプリケーションコンテキストは、必要に応じてフォームをロードして閉じることができます。これは、コンテキストでログインフォームを起動する1つのプロジェクトで行います。それが正常に完了した後にのみ、メインフォームがロードされます。また、メインフォームを終了し、ログインフォームを再ロードすることで、プログラムからの「ログアウト」を処理できるようにします。
編集:コメントから、あなたが探しているのは.Hide()だけかもしれません。これによってフォームがアンロードされることはなく、.Show()を呼び出すとフォームが復元されます(たとえば、タイマーまたはメインフォームへの参照を保持する別のフォームを使用して呼び出しを行うことができます)。私はApplicationContextを使用することを好みます。これは、ユーザーが閉じようとする可能性のあるUI要素からプログラムをメモリ内に保持する責任があるためです。