WinForm常用控件功能介绍及使用模板

目录

1.Button(按钮控件)

2.Label(标签控件)

3.TextBox(文本框控件)

4.ComboBox(下拉列表控件)

5.ListBox(列表框控件)

6.CheckBox(复选框控件)

7.RadioButton(单选按钮控件)

8.PictureBox(图片框控件)

9.Panel(面板控件)

10.GroupBox(分组框控件)

11.TabControl(选项卡控件)

12.DataGridView(数据网格控件)

13.TreeView(树视图控件)

14.ListView(列表视图控件)

15.DateTimePicker(日期时间选择器)

16.MonthCalendar(月历控件)

17.ProgressBar(进度条控件)

18.TrackBar(跟踪条控件)

19.NumericUpDown(数值上下控件)

20.DomainUpDown(域名上下控件)

21.Timer(定时器控件)

22.OpenFileDialog(打开文件对话框)

23.SaveFileDialog(保存文件对话框)

24.ColorDialog(颜色选择对话框)

25.FontDialog(字体选择对话框)

26.PrintDialog(打印对话框)

27.ToolTip(工具提示控件)

28.StatysStrip(状态栏控件)

29.MenuStrip(菜单控件)

30.ContextMenuStrip(上下文菜单控件)

31.ToolStrip(工具栏控件)

32.NotifyIcon(系统托盘图标控件)

33.WebBrowser(网页浏览器控件)

34.SplitContainer(分割容器控件)

35.FlowLayoutPanel(流式布局面板)

36.TableLayoutPanel(表格布局面板)

37.MaskedTextBox(掩码文本框控件)

38.CheckedListBox(带复选框的列表控件)


1.Button(按钮控件)

介绍说明:

用于触发用户交互操作(如提交、保存),是最基础的交互控件。

使用模板:

Button btnSubmit = new Button();

btnSubmit.Text = "提交";

btnSubmit.Click += (sender, e) => { /* 点击事件逻辑 */ };

this.Controls.Add(btnSubmit);

注意事项:

设置TabIndex确保键盘导航顺序。

禁用时设置Enabled = false,避免无效点击。

案例:

1.登录界面的"登录"按钮,触发账号密码验证。

2.数据编辑页面的"保存"按钮,提交表单数据。

2.Label(标签控件)

介绍说明:

用于显示静态文本(如标题、提示信息等),不支持用户输入内容。

使用模板:

Label lblTitle = new Label();

lblTitle.Text = "用户信息";

lblTitle.Font = new Font("微软雅黑",12,FontStyle.Bold);

this.Controls.Add(lblTitle);

注意事项:

避免设置过大文本导致换行,可以调整AutoSize或MaximumSize。

动态内容可通过Text属性实时更新。

案例:

1.表单中的"用户名:"提示文本。

2.状态提示(如"加载中...")。

3.TextBox(文本框控件)

介绍说明:

用于接收用户输入的文本(如账号、密码等)。

使用模板:

TextBox txtUsername = new TextBox();

txtUsername.PlaceholderText = "请输入用户名";

txtUsername.PasswordChar = '*';

this.Controls.Add(txtUsername);

注意事项:

密码输入需要设置PasswordChar,避免明文显示。

限制输入长度可以设置MaxLength。

案例:

1.登录界面的用户名 / 密码输入框。

2.搜索功能的关键输入框。

4.ComboBox(下拉列表控件)

介绍说明:

提供预定义选项的下拉选择框,节省界面空间。

使用模板:

ComboBox cboCity = new ComboBox();

cboCity.Items.AddRange(new string[] { "北京", "上海", "广州" });

cboCity.SelectedIndex = 0; // 默认选中第一项

this.Controls.Add(cboCity);

注意事项:

动态添加选项时调用Items.Add()或DataSource绑定数据。

设置DropDownStyle控制展开方式(如DropDownList仅允许选择)。

案例:

1.注册界面的"城市选择"下拉框。

2.筛选功能的"分类选择"下拉框。

5.ListBox(列表框控件)

介绍说明:

显示多个选项,支持单选或多选。

使用模板:

ListBox listBox = new ListBox();

listBox.Items.AddRange(new string[] { "选项1", "选项2", "选项3" });

listBox.SelectionMode = SelectionMode.MultiSimple; // 允许多选

this.Controls.Add(listBox);

注意事项:

多选时通过SelectedItems获取所有选中项。

内容过多时设置ScrollAlwaysVisible = true显示滚动条。

案例:

1.文件列表展示(如"已上传文件")。

2.权限选择(如"用户角色"多选)。

6.CheckBox(复选框控件)

介绍说明:

用于独立选项的勾选(如"同意协议"),支持多选。

使用模板:

CheckBox chkAgree = new CheckBox();

chkAgree.Text = "我同意用户协议";

chkAgree.CheckedChanged += (sender, e) => {

btnSubmit.Enabled = chkAgree.Checked; // 勾选后启用提交按钮

};

this.Controls.Add(chkAgree);

注意事项:

避免嵌套复杂逻辑,通过Checked属性判断状态。

可通过ThreeState属性实现三态(勾选 / 未勾选 / 不确定)。

案例:

1.注册页面的"同意协议"勾选框。

2.设置页面的"接收通知"选项。

7.RadioButton(单选按钮控件)

介绍说明:

用于互斥选项的选择(如"男 / 女"),需要配合GroupBox或Panel分组。

使用模板:

GroupBox groupGender = new GroupBox { Text = "性别" };

RadioButton rdoMale = new RadioButton { Text = "男", Checked = true, Location = new Point(10, 20) };

RadioButton rdoFemale = new RadioButton { Text = "女", Location = new Point(10, 40) };

groupGender.Controls.Add(rdoMale);

groupGender.Controls.Add(rdoFemale);

this.Controls.Add(groupGender);

注意事项:

必须放入同一容器(如GroupBox)才能实现互斥。

通过Checked属性判断选中状态。

案例:

1.个人信息页面的"性别选择"。

2.设置页面的"主题模式"选择(如"浅色 / 深色")。

8.PictureBox(图片框控件)

介绍说明:

用于显示图片(如Logo、产品图),支持常见格式(JPG/PNG/BMP)。

使用模板:

PictureBox pictureBox = new PictureBox();

pictureBox.Image = Properties.Resources.Logo; // 加载资源图片

pictureBox.SizeMode = PictureBoxSizeMode.StretchImage; // 拉伸适应控件大小

this.Controls.Add(pictureBox);

注意事项:

避免直接加载大尺寸图片,建议压缩后使用。

通过ImageLocation属性加载网络图片(需要处理异步)。

案例:

1.登陆界面的"公司Logo"展示。

2.商品详情页面的"产品图片"轮播。

9.Panel(面板控件)

介绍说明:

用于分组管理控件(如表单区域、功能模块等),支持滚动和边框。

使用模板:

Panel panelForm = new Panel();

panelForm.BorderStyle = BorderStyle.FixedSingle; // 显示边框

panelForm.AutoScroll = true; // 内容超出时显示滚动条

// 向面板中添加其他控件(如TextBox、Button)

panelForm.Controls.Add(txtUsername);

this.Controls.Add(panelForm);

注意事项:

作为容器管理控件布局,避免直接在Form上堆砌控件。

配合Dock或Anchor属性实现自适应布局。

案例:

1.复杂表单的"个人信息"分组面板。

2.可折叠的"高级搜索"面板。

10.GroupBox(分组框控件)

介绍说明:

带标题的面板控件,用于逻辑分组(如"性别选择"、"支付方式"等)。

使用模板:

GroupBox groupPayment = new GroupBox();

groupPayment.Text = "支付方式";

// 向分组框中添加RadioButton等控件

groupPayment.Controls.Add(rdoWeChat);

groupPayment.Controls.Add(rdoAlipay);

this.Controls.Add(groupPayment);

注意事项:

标题通过Text属性设置,位置默认在左上角。

与Panel的区别:GroupBox自带标题,Panel更灵活(如滚动、边框样式)。

案例:

1.订单页面的"支付方式选择"分组。

2.问卷页面的"满意度评分"分组。

11.TabControl(选项卡控件)

介绍说明:

通过多标签页组织不同功能模块,提升界面利用率。

使用模板:

TabControl tabControl = new TabControl();

TabPage tabPage1 = new TabPage("基本信息");

TabPage tabPage2 = new TabPage("高级设置");

// 向标签页中添加控件

tabPage1.Controls.Add(txtName);

tabPage2.Controls.Add(chkAdvanced);

tabControl.TabPages.Add(tabPage1);

tabControl.TabPages.Add(tabPage2);

this.Controls.Add(tabControl);

注意事项:

通过TabPages集合管理标签页。

设置SelectedIndex切换当前激活的标签页。

案例:

1.设置页面的"基本设置 / 高级设置"标签页。

2.数据管理页面的"列表 / 详情"标签页。

12.DataGridView(数据网格控件)

介绍说明:

以表格形式展示数据集,支持排序、编辑、分页。

使用模板:

DataGridView dataGridView = new DataGridView();

dataGridView.DataSource = GetUserData(); // 绑定数据源(如DataTable)

dataGridView.AutoGenerateColumns = true; // 自动生成列

this.Controls.Add(dataGridView);

注意事项:

大数据量时启动虚拟模式(VirtualMode = true)提升性能。

通过Columns集合自定义列样式(如隐藏列、设置列宽等)。

案例:

1.用户管理页面的"用户列表"展示。

2.订单管理页面的"订单数据"表格。

13.TreeView(树视图控件)

介绍说明:

展示层级结构数据(如文件目录、组织架构等)。

使用模板:

TreeView treeView = new TreeView();

TreeNode rootNode = new TreeNode("根节点");

rootNode.Nodes.Add("子节点1");

rootNode.Nodes.Add("子节点2");

treeView.Nodes.Add(rootNode);

this.Controls.Add(treeView);

注意事项:

通过Nodes集合递归添加子节点。

设置ShowPlusMinus = true显示展开 / 折叠按钮。

案例:

1.文件资源管理器的"目录树"。

2.组织架构页面的"部门层级"展示。

14.ListView(列表视图控件)

介绍说明:

以多种视图(大图标、列表、详情等)展示数据,支持分组和排序。

使用模板:

ListView listView = new ListView();

listView.View = View.Details; // 详情视图

listView.Columns.Add("文件名", 150); // 添加列

listView.Columns.Add("大小", 80);

listView.Items.Add(new ListViewItem(new string[] { "文档1.txt", "10KB" }));

this.Controls.Add(listView);

注意事项:

详情视图需要先添加列(Columns)再添加项。

大图标视图通过LargeImageList设置图标。

View属性的4种模式:1.Details:详细列表(带表头,最常用) 2.List:简单列表(无列表,一行一条) 3.LargeIcon:大图标模式 4.SmallIcon:小图标模式。

案例:

1.文件管理器的"文件列表"(详情视图)。

2.图片浏览器的"图片缩略图"(大图标视图)。

15.DateTimePicker(日期时间选择器)

介绍说明:

快速选择日期或时间,支持自定义格式。

使用模板:

DateTimePicker dateTimePicker = new DateTimePicker();

dateTimePicker.Format = DateTimePickerFormat.Short; // 短日期格式(如2023-10-01)

dateTimePicker.Value = DateTime.Now; // 默认当前时间

this.Controls.Add(dateTimePicker);

注意事项:

通过Format属性设置显示格式(如Long显示星期)。

设置ShowUpDown = true启用上下箭头调整日期。

案例:

1.预约页面的"日期选择"。

2.数据筛选的"开始时间 / 结束时间"选择。

16.MonthCalendar(月历控件)

介绍说明:

以月历形式展示日期,支持选择单个或多个日期。

使用模板:

MonthCalendar monthCalendar = new MonthCalendar();

monthCalendar.MaxSelectionCount = 7; // 最多选择7天

this.Controls.Add(monthCalendar);

注意事项:

通过SelectionStart和SelectionEnd获取选中日期范围。

避免在小尺寸界面使用(控件较大)。

案例:

1.日程安排页面的"日期选择器"。

2.统计页面的"月份数据筛选"。

17.ProgressBar(进度条控件)

介绍说明:

显示任务进度(如文件上传、数据加载等),提升用户等待体验。

使用模板:

ProgressBar progressBar = new ProgressBar();

progressBar.Minimum = 0;

progressBar.Maximum = 100;

progressBar.Value = 50; // 当前进度50%

this.Controls.Add(progressBar);

注意事项:

配合后台线程更新进度(避免阻塞UI)。

设置Style = ProgressBarStyle.Marquee实现无限滚动(如未知进度)。

案例:

1.文件上传页面的"上传进度"显示。

2.数据导入页面的"导入进度"显示。

18.TrackBar(跟踪条控件)

介绍说明:

通过拖动滑块选择数值(如音量调节、亮度调节等)。

使用模板:

TrackBar trackBar = new TrackBar();

trackBar.Minimum = 0;

trackBar.Maximum = 100;

trackBar.Value = 50;

trackBar.Scroll += (sender, e) => {

lblVolume.Text = $"音量:{trackBar.Value}%"; };

this.Controls.Add(trackBar);

注意事项:

通过Scroll事件实时获取滑块值。

设置TickFrequency控制刻度间隔。

案例:

1.视频播放器的"音量调节"滑块。

2.图像编辑工具的"亮度调节"滑块。

19.NumericUpDown(数值上下控件)

介绍说明:

通过上下箭头调整数值,限制输入范围。

使用模板:

NumericUpDown numericUpDown = new NumericUpDown();

numericUpDown.Minimum = 1;

numericUpDown.Maximum = 100;

numericUpDown.Value = 10; // 默认值

this.Controls.Add(numericUpDown);

注意事项:

通过Value属性获取当前数值。

设置Increment控制每次调整的步长。

案例:

1.购物车页面的"商品数量"调整。

2.设置页面的"字体大小"调整。

20.DomainUpDown(域名上下控件)

介绍说明:

类似NumericUpDown,但用于字符串选项的切换(如"com / cn / net")。

使用模板:

DomainUpDown domainUpDown = new DomainUpDown();

domainUpDown.Items.AddRange(new string[] { "com", "cn", "net" });

domainUpDown.SelectedIndex = 0;

this.Controls.Add(domainUpDown);

注意事项:

通过Items集合添加字符串选项。

设置Wrap属性控制是否循环切换(如最后一项后回到第一项)。

案例:

1.域名注册页面的"后缀选择"。

2.设置页面的"语言选择"(如"中文 / 英文 / 日文")。

21.Timer(定时器控件)

介绍说明:

用于定时触发事件(如轮播图切换、数据刷新),支持毫秒级精度。

使用模板:

Timer timer = new Timer();

timer.Interval = 1000; // 间隔1秒(1000毫秒)

timer.Tick += (sender, e) => {

// 定时执行的逻辑(如更新时间、切换图片)

lblTime.Text = DateTime.Now.ToString("HH:mm:ss");

};

timer.Start(); // 启动定时器

注意事项:
避免在Tick事件中执行耗时操作,防止UI卡顿。

不需要时调用Stop()停止定时器,释放资源。

案例:

1.时钟应用的"实时时间更新"。

2.轮播图的"自动切换图片"功能。

22.OpenFileDialog(打开文件对话框)

介绍说明:

用于选择文件(如打开文档、图片),支持筛选文件类型。

使用模板:

OpenFileDialog openFileDialog = new OpenFileDialog();

openFileDialog.Filter = "图片文件|*.jpg;*.png|所有文件|*.*"; // 文件类型筛选

openFileDialog.Title = "选择图片";

if (openFileDialog.ShowDialog() == DialogResult.OK) {

string filePath = openFileDialog.FileName; // 获取选中文件路径

pictureBox.Image = Image.FromFile(filePath);

}

注意事项:

筛选器格式为"描述|*.ext1;*ext2",多个类型用 | 分割。

大文件需要异步加载,避免阻塞UI。

案例:

1.图片编辑器的"打开图片"功能。

2.文档阅读器的"打开文档"功能。

23.SaveFileDialog(保存文件对话框)

介绍说明:

用于保存文件(如导出数据、保存编辑内容),支持自定义文件名和格式。

使用模板:

SaveFileDialog saveFileDialog = new SaveFileDialog();

saveFileDialog.Filter = "文本文件|*.txt|Excel文件|*.xlsx";

saveFileDialog.FileName = "导出数据"; // 默认文件名

if (saveFileDialog.ShowDialog() == DialogResult.OK) {

string savePath = saveFileDialog.FileName;

File.WriteAllText(savePath, "导出内容"); // 保存文件

}

注意事项:

设置OverwritePrompt = true(默认)防止覆盖已有文件。

保存前需要确认文件格式是否正确。

案例:

1.数据报表的"导出为Excel"功能。

2.文本编辑器的"另存为"功能。

24.ColorDialog(颜色选择对话框)

介绍说明:

用于选择颜色(如设置字体颜色、背景色)。

使用模板:

ColorDialog colorDialog = new ColorDialog();

if (colorDialog.ShowDialog() == DialogResult.OK) {

lblText.ForeColor = colorDialog.Color; // 设置文本颜色

}

注意事项:

通过Color属性获取选中颜色。

设置AllowFullOpen = true允许用户自定义颜色。

案例:

1.文本编辑器的"字体颜色设置"。

2.绘图工具的"画笔颜色选择"。

25.FontDialog(字体选择对话框)

介绍说明:

用于选择字体(如设置文本的字体、大小、样式)。

使用模板:

FontDialog fontDialog = new FontDialog();

if (fontDialog.ShowDialog() == DialogResult.OK) {

lblText.Font = fontDialog.Font; // 设置文本字体

}

注意事项:

通过Font属性获取选中字体。

设置ShowColor = true同时选择字体颜色。

案例:

1.文字处理软件的"字体设置"功能。

2.界面个性化设置的"标题字体选择"。

26.PrintDialog(打印对话框)

介绍说明:

用于打印文档(如打印报表、图片),支持选择打印机和设置打印参数。

使用模板:

PrintDialog printDialog = new PrintDialog();

if (printDialog.ShowDialog() == DialogResult.OK) {

// 执行打印逻辑(需配合PrintDocument控件)

PrintDocument pd = new PrintDocument(); pd.PrintPage += (sender, e) => { e.Graphics.DrawString("打印内容", new Font("Arial", 12), Brushes.Black, 100, 100); };

pd.Print();

}

注意事项:

需要配合PrintDocument控件实现打印内容绘制。

打印前确认打印机状态(是否在线)。

案例:

1.订单系统的"打印订单"功能。

2.图片查看器的"打印图片"功能。

27.ToolTip(工具提示控件)

介绍说明:

用于鼠标悬停时显示提示信息(如控件功能说明)。

使用模板:

ToolTip toolTip = new ToolTip();

toolTip.SetToolTip(btnSubmit, "点击提交表单"); // 为按钮设置提示

toolTip.ToolTipTitle = "提示"; // 提示标题

toolTip.IsBalloon = true; // 气泡样式

注意事项:

通过SetToolTip为控件绑定提示文本。

避免提示文本过长,保持简洁。

案例:

1.复杂界面的"控件功能说明"提示。

2.表单输入框的"格式要求"提示(如"请输入11位手机号")。

28.StatysStrip(状态栏控件)

介绍说明:

用于显示应用状态信息(如加载进度、登陆状态),支持多面板布局。

使用模板:

StatusStrip statusStrip = new StatusStrip();

ToolStripStatusLabel lblStatus = new ToolStripStatusLabel();

lblStatus.Text = "就绪";

statusStrip.Items.Add(lblStatus);

this.Controls.Add(statusStrip);

注意事项:

通过ToolStripStatusLabel添加状态项。

动态更新状态时直接修改Text属性。

案例:

1.文本编辑器的"字数统计"状态栏。

2.下载工具的"下载进度"状态栏。

29.MenuStrip(菜单控件)

介绍说明:

用于创建应用程序菜单(如文件、编辑、帮助),支持多级子菜单。

使用模板:

MenuStrip menuStrip = new MenuStrip();

ToolStripMenuItem menuFile = new ToolStripMenuItem("文件");

ToolStripMenuItem menuNew = new ToolStripMenuItem("新建");

menuNew.Click += (sender, e) => { /* 新建文件逻辑 */ };

menuFile.DropDownItems.Add(menuNew);

menuStrip.Items.Add(menuFile);

this.Controls.Add(menuStrip);

注意事项:

通过DropDownItems添加子菜单。

设置ShortcutKeys为菜单项绑定快捷键(如menuNew.ShortcutKeys = Keys.Ctrl | Keys.N)。

案例:

1.文本编辑器的"文件 / 编辑 / 菜单"菜单。

2.绘图软件的"工具 / 帮助"菜单。

30.ContextMenuStrip(上下文菜单控件)

介绍说明:

用于右键点击时弹出的菜单(如复制、粘贴、删除),支持自定义菜单顶。

使用模板:

ContextMenuStrip contextMenu = new ContextMenuStrip();

ToolStripMenuItem menuCopy = new ToolStripMenuItem("复制");

menuCopy.Click += (sender, e) => { /* 复制逻辑 */ };

contextMenu.Items.Add(menuCopy);

dataGridView.ContextMenuStrip = contextMenu; // 绑定到DataGridView

注意事项:

通过ContextMenuStrip属性为控件绑定上下文菜单。

根据当前选中内容动态调整菜单单项(如禁用"粘贴"当前剪贴板为空时)。

案例:

1.文本框的"复制 / 粘贴 / 剪切"右键菜单

2.DataGridView的"删除行 / 导出数据"右键菜单。

31.ToolStrip(工具栏控件)

介绍说明:

用于创建快捷操作工具栏(如新建、保存、撤销按钮),支持图标和文本。

使用模板:

ToolStrip toolStrip = new ToolStrip();

ToolStripButton btnNew = new ToolStripButton("新建");

btnNew.Image = Properties.Resources.NewIcon; // 绑定图标

btnNew.Click += (sender, e) => { /* 新建逻辑 */ };

toolStrip.Items.Add(btnNew);

this.Controls.Add(toolStrip);

注意事项:

通过ToolStripButton添加工具栏按钮。

图标建议使用16x16或32x32像素的PNG图片。

案例:

1.文字处理软件的"格式工具栏"(加粗、斜体、下划线)。

2.图像编辑器的"绘图工具栏"(画笔、橡皮擦、形状)。

32.NotifyIcon(系统托盘图标控件)

介绍说明:

用于在系统托盘显示图标(如后台运行程序的状态提示),支持右键菜单。

使用模板:

NotifyIcon notifyIcon = new NotifyIcon();

notifyIcon.Icon = SystemIcons.Information; // 默认使用系统托盘图标

notifyIcon.Text = "我的应用"; // 悬停提示

notifyIcon.Visible = true; // 显示托盘图标

// 右键菜单

ContextMenuStrip contextMenu = new ContextMenuStrip();

contextMenu.Items.Add("退出", null, (sender, e) => Application.Exit());

notifyIcon.ContextMenuStrip = contextMenu;

注意事项:

程序退出前需要调用Dispose()释放资源。

通过ShowBalloonTip()显示气泡提示(如"操作成功")。

案例:

1.即时通讯软件的"后台运行托盘图标"。

2.下载工具的"下载完成通知"。

33.WebBrowser(网页浏览器控件)

介绍说明:

用于在WinForm中嵌入网页(如显示帮助文档、加载在线内容)。

使用模板:

WebBrowser webBrowser = new WebBrowser();

webBrowser.Navigate("https://www.baidu.com"); // 加载网页

this.Controls.Add(webBrowser);

注意事项:

需要处理网页加载事件(如DocumentCompleted)。

禁用脚本或ActiveX控件以提高安全性(根据需求)。

案例:

1.帮助文档的"在线帮助页面"嵌入。

2.新闻客户端的"内嵌网页新闻"展示。

34.SplitContainer(分割容器控件)

介绍说明:

用于将界面分为可调整大小的两部分(如左侧导航、右侧内容)。

使用模板:

SplitContainer splitContainer = new SplitContainer();

splitContainer.Orientation = Orientation.Vertical; // 垂直分割(左右布局)

splitContainer.Panel1.Controls.Add(treeView); // 左侧导航树

splitContainer.Panel2.Controls.Add(dataGridView); // 右侧数据表格

this.Controls.Add(splitContainer);

注意事项:

通过Orientation设置分割方向(水平 / 垂直)。

调整分割线位置时设置SplitterDistance属性。

案例:

1.资源管理器的"目录树+文件列表"布局。

2.邮件客户端的"邮件列表+邮件内容"布局。

35.FlowLayoutPanel(流式布局面板)

介绍说明:

用于自动排列控件(如动态添加按钮、图片),支持水平 / 垂直流式布局。

使用模板:

FlowLayoutPanel flowLayoutPanel = new FlowLayoutPanel();

flowLayoutPanel.FlowDirection = FlowDirection.LeftToRight; // 水平流式布局

flowLayoutPanel.AutoScroll = true; // 内容超出时显示滚动条

// 动态添加按钮

for (int i = 0; i < 10; i++) {

Button btn = new Button { Text = $"按钮{i+1}" };

flowLayoutPanel.Controls.Add(btn); }

this.Controls.Add(flowLayoutPanel);

注意事项:

通过FlowDirection设置布局方向(如TopDown垂直布局)。

避免嵌套复杂控件导致布局混乱。

案例:

1.图片浏览器的"图片缩略图"流式布局。

2.标签页的"动态标签"排列。

36.TableLayoutPanel(表格布局面板)

介绍说明:

用于以表格形式排列控件(如表单布局),支持行和列的自动调整。

使用模板:

TableLayoutPanel tableLayoutPanel = new TableLayoutPanel();

tableLayoutPanel.RowCount = 2; // 2行

tableLayoutPanel.ColumnCount = 2; // 2列

// 添加控件到单元格

tableLayoutPanel.Controls.Add(new Label { Text = "用户名:" }, 0, 0);

tableLayoutPanel.Controls.Add(new TextBox(), 1, 0);

tableLayoutPanel.Controls.Add(new Label { Text = "密码:" }, 0, 1);

tableLayoutPanel.Controls.Add(new TextBox { PasswordChar = '*' }, 1, 1);

this.Controls.Add(tableLayoutPanel);

注意事项:

通过RowStyles和ColumnStyles设置行高和列宽(如SizeType.Percent按比例分配)。

合并单元格需要设置CellBorderStyle和ColumnSpan / RowSpan。

案例:

1.登录界面的"表单布局"(标签+输入框)。

2.数据录入界面的"多字段表格布局"。

37.MaskedTextBox(掩码文本框控件)

介绍说明:

用于限制输入格式(如手机号、身份证号),支持预定义掩码。

使用模板:

MaskedTextBox maskedTextBox = new MaskedTextBox();

maskedTextBox.Mask = "000-0000-0000"; // 掩码格式(如手机号:138-1234-5678)

maskedTextBox.PromptChar = '_'; // 占位符

this.Controls.Add(maskedTextBox);

注意事项:

常用掩码字符:0(数字)、9(可选数字)、#(数字或空格)、A(字母或数字)。

通过Text属性获取输入内容(自动过滤掩码字符)。

案例:

1.表单中的"手机号输入框"(格式:XXX-XXXX-XXXX)。

2.身份证号输入框(格式:XXXXXX-XXXX-XXXX-XXXX)。

38.CheckedListBox(带复选框的列表控件)

介绍说明:

结合ListBox和CheckBox,支持多选列表项。

使用模板:

CheckedListBox checkedListBox = new CheckedListBox();

checkedListBox.Items.AddRange(new string[] { "选项1", "选项2", "选项3" });

// 获取选中项

foreach (var item in checkedListBox.CheckedItems) {

Console.WriteLine(item.ToString()); }

this.Controls.Add(checkedListBox);

注意事项:

通过CheckedItems获取所有选中项。

设置CheckOnClick = true点击项时直接勾选。

案例:

1.任务管理的"多任务选择"列表。

2.筛选功能的"多条件选择"列表。

相关推荐
week_泽2 小时前
第7课:管理长期记忆的关键架构决策 - 学习笔记_7
java·笔记·学习·ai agent
koo3642 小时前
pytorch深度学习笔记15
pytorch·笔记·深度学习
ou.cs2 小时前
WPF TreeView 自动展开所有节点:附加行为(Attached Behavior)保姆级实现教程
c#·.net·wpf
鱼蛋-Felix3 小时前
C#浮点数在部分国家解析失效问题
开发语言·unity·c#
Aevget3 小时前
DevExpress WinForms中文教程:Data Grid - 如何自定义行预览部分?
界面控件·winform·devexpress·ui开发·.net 10
中屹指纹浏览器3 小时前
2026 指纹浏览器技术深度剖析:沙箱隔离与 IP 协同适配的实现方案
经验分享·笔记
被制作时长两年半的个人练习生3 小时前
首尾元素相同的间隔循环策略
c++·笔记·循环·ptx
用户298698530143 小时前
C# Word文档页面操作:告别手动,高效掌控你的Word文档!
后端·c#·.net
今儿敲了吗3 小时前
计算机网络第三章笔记(三)
笔记·计算机网络