テーブルレイアウトパネル(TableLayoutPanel)を使うと格子状にコントロールを配置することが出来ます。
入力フォームに使うと便利そうなので試してみました。
using System;
using System.Windows.Forms;
using System.Drawing;
// テーブルレイアウトパネル
class Form1 : Form
{
Form1()
{
var tbl = new TableLayoutPanel
{
Dock = DockStyle.Fill,
};
var lbl1 = new Label
{
Text = "Label1",
Size = new Size(40,10),
};
tbl.Controls.Add(lbl1, 0, 0);
var trb1 = new TrackBar
{
Value = 10,
};
tbl.Controls.Add(trb1, 1, 0);
var txt1 = new TextBox
{
Text = trb1.Value.ToString(),
};
tbl.Controls.Add(txt1, 2, 0);
var lbl2 = new Label
{
Text = "Label2",
Size = new Size(40,10),
};
tbl.Controls.Add(lbl2, 0, 1);
var trb2 = new TrackBar
{
Value = 10,
};
tbl.Controls.Add(trb2, 1, 1);
var txt2 = new TextBox
{
Text = trb2.Value.ToString(),
};
tbl.Controls.Add(txt2, 2, 1);
this.Controls.Add(tbl);
}
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
}
各コントロールの座標を指定していませんが、綺麗に格子状に並びました。
テーブルレイアウトパネルにコントロールを追加は
tbl.Controls.Add(txt1, 2, 0);
で行っています。
第一引数は追加するコントロール。
第二引数は列。
第三引数は行。
になります。
セルのサイズは配置するコントロールのサイズに合わせてくれるようなので、そこだけ気にしておけば、フォームとして破綻しないレイアウトで配置しくれます。
コメント