1. はじめに
- SplitContainerコントロール内のパネルにフォームをセットしたい
- SplitContainerコントロール内のフォーム間のデータを参照、更新したい
2. 子フォームを準備する
3.1. 新しいフォームを作成する
3.2. コンストラクタに親フォームを受けるようにする
namespace WinFormsApp1
{
public partial class Sub1 : Form
{
// メインフォームのプライベート変数
private Main _main;
public Sub1(Main main)
{
InitializeComponent();
// コンストラクタで変数にセット
_main = main;
}
}
}
3.3. FormBorderStyleにNone
をセットする
3.4. 動作確認用にボタンを追加する
namespace WinFormsApp1
{
public partial class Sub1 : Form
{
// メインフォームのプライベート変数
private Main _main;
public Sub1(Main main)
{
InitializeComponent();
// コンストラクタで変数にセット
_main = main;
}
private void button1_Click(object sender, EventArgs e)
{
_main.Text = "Sub1";
}
}
}
4. メインフォームの準備
4.1. SplitContainerを配置する
4.2. Loadイベントを修正して、子フォームに親フォームを渡すようにする
- SplitContainerにフォームをAddする場合、TopLevelプロパティを
false
にする必要がある
namespace WinFormsApp1
{
public partial class Main : Form
{
public Main()
{
InitializeComponent();
}
private void Main_Load(object sender, EventArgs e)
{
// 子フォームを作成
Sub1 sub1 = new Sub1(this);
Sub2 sub2 = new Sub2(this);
// TopLevelプロパティにfalseをセット
sub1.TopLevel = false;
sub2.TopLevel = false;
// パネルにセット
splitContainer1.Panel1.Controls.Add(sub1);
splitContainer1.Panel2.Controls.Add(sub2);
// 子フォームを表示
sub1.Show();
sub2.Show();
}
}
}
4.3. 親フォームのコントロールにアクセスする場合
5. 操作確認
6. 参考文献