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事件)实现自定义页签外观:
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);
tabControl1.SizeMode = TabSizeMode.Fixed;