布局控件
Panel
对其他控件进行分组,可添加滚动条
重要属性:
- AutoScroll:是否自动显示滚动条
- BorderStyle:边框样式
// 动态向Panel中添加按钮
private void Form1_Load(object sender, EventArgs e)
{
Panel panel = new Panel();
panel.Size = new Size(200, 200);
panel.AutoScroll = true;
this.Controls.Add(panel);
for (int i = 0; i < 10; i++)
{
Button btn = new Button();
btn.Text = "按钮" + i;
btn.Location = new Point(10, i * 30);
panel.Controls.Add(btn);
}
}
GroupBox
将相关控件分组,提供标题和边框
重要属性:
- Text:标题
- FlatStyle:边框样式
- 与Panel区别:
- GroupBox自带标题和边框,适合逻辑分组
- Panel更灵活,支持动态布局
// 在GroupBox中放置单选按钮
GroupBox groupBox1 = new GroupBox();
groupBox1.Text = "选择性别";
groupBox1.Location = new Point(20, 20);
this.Controls.Add(groupBox1);
RadioButton radioMale = new RadioButton();
radioMale.Text = "男";
radioMale.Location = new Point(10, 20);
groupBox1.Controls.Add(radioMale);
RadioButton radioFemale = new RadioButton();
radioFemale.Text = "女";
radioFemale.Location = new Point(10, 50);
groupBox1.Controls.Add(radioFemale);
FlowLayoutPanel
自动排列子控件(水平或垂直),支持动态调整布局
重要属性:
- FlowDirection:方向(LeftToRight、TopDown等)
- WrapContents:是否换行
// 动态添加按钮到FlowLayoutPanel
private void Form1_Load(object sender, EventArgs e)
{
FlowLayoutPanel flowPanel = new FlowLayoutPanel();
flowPanel.Dock = DockStyle.Fill; // 填充整个窗体
flowPanel.FlowDirection = FlowDirection.LeftToRight;
flowPanel.WrapContents = true;
this.Controls.Add(flowPanel);
for (int i = 0; i < 10; i++)
{
Button btn = new Button();
btn.Text = "按钮" + i;
btn.Width = 80;
flowPanel.Controls.Add(btn);
}
}
TabControl
用于实现多页签功能
属性:
- TabPages:页签集合
- Apperance:样式,Normal、Buttons、FlatButtons
- Alignment:位置,Top、Bottom、Left、Right
- Multiline:是否允许多行
- SizeMode:宽度模式,Normal、FillToRight、Fixed
- SelectedIndex:获取选中的页签索引
- SelectedTab:获取选中的对象
方法: - Add
- Remove
事件: - SelectedIndexChanged
高级技巧
自定义页签样式
通过重绘(DrawItem事件)实现自定义页签外观:
// 允许开发者自定义绘制页签,但所有页签高度固定(由 ItemSize 控制)
tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed;
tabControl1.DrawItem += (sender, e) =>
{
// 自定义绘制逻辑
e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds);
TextRenderer.DrawText(e.Graphics, tabControl1.TabPages[e.Index].Text,
e.Font, e.Bounds, Color.Blue, TextFormatFlags.VerticalCenter);
};
隐藏页签头
tabControl1.Appearance = TabAppearance.FlatButtons;
// 设置页签的固定宽度和高度
tabControl1.ItemSize = new Size(0, 1);
// 控制页签的尺寸调整逻辑(自动、固定(由 ItemSize 决定)或填充)
tabControl1.SizeMode = TabSizeMode.Fixed;
TabPage
是TabControl的组成部分,用于定义单个页签的内容区域。
属性:
- Text:标题
- BackColor
- ImageIndex: 页签头显示图标索引,需配合 TabControl 的 ImageList 属性使用
- Enabled:false时无法切换到
- Visible:将不会显示出来
- Controls:获取页签内子控件集合
方法: - Dispose:释放页签及其子控件的资源
- Show()/Hide():显示或隐藏页签
事件: - Enter:当获得焦点出发
- Leave:反之

浙公网安备 33010602011771号