Code:
using System;
using System.Windows.Forms;
using System.Drawing;
namespace CsDev
{
class PanelWithSplitter : Form
{
float fproportion = 0.5f;
Panel panel2;
public static void Main()
{
Application.Run(new PanelWithSplitter());
}
public PanelWithSplitter()
{
Text = "分隔器控件使用示例";
Panel panel = new Panel();
panel.Parent = this;
panel.Dock = DockStyle.Fill;
panel.BackColor = Color.Red;
panel.Resize += new EventHandler(panel_Resize);
panel.Paint += new PaintEventHandler(panel_Paint);
Splitter split = new Splitter();
split.Parent = this;
split.Dock = DockStyle.Left;
split.SplitterMoving+=new SplitterEventHandler(split_SplitterMoving);
panel2 = new Panel();
panel2.Parent = this;
panel2.Dock = DockStyle.Left;
panel2.BackColor = Color.Lime;
panel2.Resize += new EventHandler(panel_Resize);
panel2.Paint += new PaintEventHandler(panel_Paint);
OnResize(EventArgs.Empty);
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
panel2.Width = (int)(fproportion * ClientSize.Width);
}
void panel_Resize(object obj, EventArgs e)
{
((Panel)obj).Invalidate();//使面板区域重绘
}
void split_SplitterMoving(object obj, SplitterEventArgs e)
{
fproportion = (float)e.SplitX / ClientSize.Width;
}
void panel_Paint(object obj, PaintEventArgs e)
{
Panel panel = (Panel)obj;
Graphics grph = e.Graphics;
grph.DrawEllipse(Pens.Black,0,0,panel.Width-1,panel.Height-1);
}
}
}
效果图:
说明:中间那一条即是分隔器控件,由于未设置其背景色,所以和窗体背景色一致,可以拖动分隔器来改变左右面板控件的大小。