フォームから別のフォームを開くようにする場合、元のフォームが閉じられた時・最小化されたときに開かれたフォームも連動して同じ動きをさせるにはどうすればいいか、書いていきます。
フォームが閉じたら別フォームも連携して閉じる・最小化する
親フォームである「MainForm」に設置してあるボタンから、子フォーム「SubForm1」「SubForm2」「SubForm3」が開けるという場合で考えてみます。

こういうときは、子フォームを開く時のShowに親フォームのインスタンスを渡してあげればOKです。こうすることで、MainFormが閉じられるとき、最小化される時にSubForm1~3も一緒に閉じられたり最小化されたりします。
private void Button1_Click(object sender, EventArgs e)
{
Form subForm1 = new SubForm1();
subForm1.Show(this);
}
private void Button2_Click(object sender, EventArgs e)
{
Form subForm2 = new SubForm2();
subForm2.Show(this);
}
private void Button3_Click(object sender, EventArgs e)
{
Form subForm3 = new SubForm3();
subForm3.Show(this);
}
Formクラスの詳細を見れば分かりますが、ShowメソッドにFormクラスを継承したオブジェクトを入れるとそれがownerとして設定されます。
プロパティとしても参照できるので、オーナーのフォーム名は以下のように確認できます。
private void SubForm1_Click(object sender, EventArgs e)
{
var owner = this.Owner.Name;
// MainForm
}
こんな具合にFormの世界にも従属関係があるわけです。人間ほどドロドロしてないですけど。
コメント
[…] 【C#】フォーム同士のイベントを連動させるには?【Form】hiyo-code.com2021.02.1… […]