フォームを子フォーム(サブフォーム) として表示する - C#
フォームを子フォーム(サブフォーム) として表示するコードを紹介します。
プログラム
UI
下図のUIを作成します。
FormMain
FormSub
コード
下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FormSubForm
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
FormSub fs = new FormSub();
fs.Show(this);
}
}
}
実行結果
上記のプロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。サブウィンドウが表示されます。(下図)
[button1]をクリックするごとにサブフォームが表示されます。
サブフォームどうしではフォームをクリックするとそのフォームが最前面に表示されます。
フォームがサブフォームの場合、オーナーとなる親フォームをクリックしてもサブフォームより前面には表示されません。常にサブフォームが親フォームの前面に表示されます。
タスクバーには、メインフォームとサブフォームが表示されます。タスクバーから非表示にする場合は
こちらの記事を参照してください。
参考:オーナーを設定しない場合の動作
下記のコードでプロジェクトを実行すると、[button1]のクリック時に表示されるフォームにはオーナーが設定されないため、サブフォームではなくなります。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FormSubForm
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
FormSub fs = new FormSub();
fs.Show();
}
}
}
プロジェクトを実行すると下図のフォームが表示されます。
[button1]をクリックすると、新しいフォームが表示されます。
[button1]をクリックするごとにフォームが表示されます。
サブフォームをクリックするとそのフォームが最前面に表示されます。
メインフォームをクリックしてアクティブにすると、最前面に表示されます。先ほどのサブフォームの場合と動作が異なります。
タスクバーには、メインフォームとサブフォームが表示されます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用