意外とSplitContainerを使うサンプルソースがサクッと見つからなかったので、メモ代わりに置いておきます。
キャプチャ
ソースコード
SplitterDistance
は、親であるForm
のコンストラクタ内で設定してもうまく反映されないようなのでLoad
イベントにつっこんでみた。(そのうち調べる・・・かも・・・)
using System;
using System.Drawing;
using System.Windows.Forms;
class SampleForm : Form
{
SplitContainer spl1;
SplitContainer spl2;
SampleForm()
{
ClientSize = new Size(500, 300);
Controls.Add(spl1 = new SplitContainer(){
Dock = DockStyle.Fill,
Orientation = Orientation.Horizontal, // 横線で上下に分割
// SplitterDistance = 250, // 分割線の位置を指定[pixel] Horizontalの場合は上端からの位置
BorderStyle = BorderStyle.FixedSingle,
SplitterWidth = 2,
FixedPanel = FixedPanel.Panel1, // spl1が属すコントロールがリサイズされたときに、Panel1側のサイズ(分割線)を保持(固定)する
});
spl1.Panel2.Controls.Add(spl2 = new SplitContainer(){
Dock = DockStyle.Fill,
Orientation = Orientation.Vertical, // 縦線で左右に分割
// SplitterDistance = 100,// 分割線の位置を指定[pixel] Verticalの場合は左端からの位置
BorderStyle = BorderStyle.Fixed3D,
SplitterWidth = 2,
IsSplitterFixed = true,
});
Load += (s,e)=>{
spl1.SplitterDistance = 150; // 分割線の位置を指定[pixel] Horizontalの場合は上端からの位置
spl2.SplitterDistance = 200; // 分割線の位置を指定[pixel] Verticalの場合は左端からの位置
};
spl1.Panel1.Controls.Add(new Button(){
Text="Button on spl1.Panel1",
Dock = DockStyle.Fill,
});
spl2.Panel1.Controls.Add(new Button(){
Text="Button on spl2.Panel1",
Dock = DockStyle.Fill,
});
spl2.Panel2.Controls.Add(new Button(){
Text="Button on spl2.Panel2",
Dock = DockStyle.Fill,
});
}
[STAThread]
static void Main(string[] args)
{
Application.Run(new SampleForm());
}
}