【C#】フォームを閉じたら別フォームも一緒に閉じる・最小化する【Form】

フォームから別のフォームを開くようにする場合、元のフォームが閉じられた時・最小化されたときに開かれたフォームも連動して同じ動きをさせるにはどうすればいいか、書いていきます。

フォームが閉じたら別フォームも連携して閉じる・最小化する

親フォームである「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の世界にも従属関係があるわけです。人間ほどドロドロしてないですけど。

コメント

  1. […] 【C#】フォーム同士のイベントを連動させるには?【Form】hiyo-code.com2021.02.1… […]

タイトルとURLをコピーしました