メインフォームがアイコン化されるとサブフォームもアイコン化される動作にする

メインフォームがアイコン化されるとサブフォームもアイコン化される方法を紹介します。

概要

メインフォームがアイコン化されると、サブフォームもアイコン化される動作を実現するには、メインフォームがサブフォームを所有するアプリケーションを作成する必要があります。サブフォームがメインフォームに所有されるには、サブフォームのOwnerプロパティにメインフォームを代入することでサブフォームがメインフォームに所有されることになります。

プログラム例:メインフォームがサブフォームを所有しない例

UI

以下のUIを用意します。

メインフォーム

メインフォームがアイコン化されるとサブフォームもアイコン化される動作にする:画像1

サブフォーム

メインフォームがアイコン化されるとサブフォームもアイコン化される動作にする:画像2
メインフォームがアイコン化されるとサブフォームもアイコン化される動作にする:画像3
メインフォームがアイコン化されるとサブフォームもアイコン化される動作にする:画像4

コード

メインフォームのコードに下記を記述します。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MultiFormOwnedApp
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      FormSub1 fs1 = new FormSub1();
      FormSub2 fs2 = new FormSub2();
      FormSub3 fs3 = new FormSub3();

      fs1.Show();
      fs2.Show();
      fs3.Show();
    }
  }
}

実行結果

アプリケーションを実行しメインフォームのボタンを押すとサブフォームが表示されます。
メインフォームがアイコン化されるとサブフォームもアイコン化される動作にする:画像5

サブフォーム表示後メインフォームを最小化しても、サブフォームは最小化されずデスクトップに表示され続けます。
メインフォームがアイコン化されるとサブフォームもアイコン化される動作にする:画像6

プログラム例:メインフォームがサブフォームを所有する例

UI

UIは先のプログラムのUIと同じものを利用します。

コード

メインフォームのコードに下記を記述します。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MultiFormOwnedApp
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      FormSub1 fs1 = new FormSub1();
      FormSub2 fs2 = new FormSub2();
      FormSub3 fs3 = new FormSub3();

      fs1.Owner = this;
      fs2.Owner = this;
      fs3.Owner = this;

      fs1.Show();
      fs2.Show();
      fs3.Show();
    }
  }
}

解説

fs1.Owner = this;
fs2.Owner = this;
fs3.Owner = this;

を記述し、サブフォームがメインフォームに所有されるよう設定します。

実行結果

アプリケーションを実行し、メインフォームのボタンを押しサブフォームを表示したのち、メインフォームを最小化するとサブフォームも最小化されます。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2012-04-24
Copyright © 1995–2025 iPentec all rights reserverd.