3
社区成员
发帖
与我相关
我的任务
分享| 控件名称 | 属性分类及完整属性列表(含特有属性) | 各属性取值及含义(精准说明) | 属性作用及使用示例(分属性详细说明) | 备注(兼容性、使用规范、注意事项) |
| Button(按钮控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、Button特有核心属性:1. Text、Image、ImageAlign、TextAlign、FlatStyle、DialogResult、IsDefault、IsCancel、ImageList、ImageIndex | 1. Text:string类型,按钮显示文本,默认空字符串;2. Image:Image类型,按钮显示图片,默认null;3. ImageAlign:ContentAlignment枚举,图片对齐方式,默认MiddleLeft;4. TextAlign:ContentAlignment枚举,文本对齐方式,默认MiddleCenter;5. FlatStyle:FlatStyle枚举,按钮样式,Standard(标准,默认)、Flat(扁平)、Popup(悬浮高亮)、System(系统样式);6. DialogResult:DialogResult枚举,点击按钮后返回的对话框结果(如OK、Cancel),仅在对话框中有效;7. IsDefault:bool类型,是否为默认按钮(按Enter键触发),true(是)、false(否,默认);8. IsCancel:bool类型,是否为取消按钮(按Esc键触发),true(是)、false(否,默认)。 | 1. 基础功能按钮(Text + Click事件):作用:触发特定操作(提交、保存、删除),是WinForm最核心的交互控件;示例:Button btnSave = new Button(); btnSave.Text = "保存"; btnSave.Location = new Point(80, 200); btnSave.Size = new Size(80, 30); btnSave.Click += BtnSave_Click; this.Controls.Add(btnSave); // 点击事件处理 private void BtnSave_Click(object sender, EventArgs e) { // 执行保存逻辑 MessageBox.Show("保存成功!"); }说明:创建“保存”按钮,绑定Click事件,点击时执行保存逻辑并提示结果。2. 图文按钮(Image + ImageAlign):示例:Button btnAdd = new Button(); btnAdd.Text = "新增"; btnAdd.Image = Image.FromFile("add.png"); btnAdd.ImageAlign = ContentAlignment.MiddleLeft; btnAdd.TextAlign = ContentAlignment.MiddleRight; btnAdd.Padding = new Padding(5, 0, 0, 0); btnAdd.Location = new Point(20, 200); btnAdd.Size = new Size(80, 30); this.Controls.Add(btnAdd);说明:按钮左侧显示“新增”图标,右侧显示文本,通过Padding设置图文间距,直观传达功能。3. 对话框默认/取消按钮(IsDefault + IsCancel):示例:// 提交按钮(Enter触发) Button btnSubmit = new Button(); btnSubmit.Text = "提交"; btnSubmit.Location = new Point(170, 200); btnSubmit.Size = new Size(80, 30); btnSubmit.IsDefault = true; btnSubmit.DialogResult = DialogResult.OK; // 取消按钮(Esc触发) Button btnCancel = new Button(); btnCancel.Text = "取消"; btnCancel.Location = new Point(260, 200); btnCancel.Size = new Size(80, 30); btnCancel.IsCancel = true; btnCancel.DialogResult = DialogResult.Cancel; this.Controls.Add(btnSubmit); this.Controls.Add(btnCancel);说明:提交按钮按Enter触发,取消按钮按Esc触发,点击后返回对应DialogResult,适用于对话框场景。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 文本简洁:按钮Text建议简洁明了(2-4字),避免过长导致显示不全;- 样式统一:同一应用内按钮样式(FlatStyle、大小、颜色)建议统一,提升界面一致性;- 对话框优化:对话框场景务必设置IsDefault/IsCancel和DialogResult,提升操作效率;3. 注意事项:- Enabled=false时:按钮不可点击,颜色变灰,Click事件不触发;- 扁平样式:FlatStyle=Flat时,按钮默认无高亮,可通过MouseEnter/MouseLeave事件添加悬浮效果;- 图片资源:建议将按钮图片嵌入项目资源,避免使用绝对路径导致文件丢失;- 异步操作:点击触发的复杂逻辑(如数据查询、文件下载)需异步执行,避免UI卡死。 |
| CheckBox(复选框控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、CheckBox特有核心属性:1. Text、Checked、CheckState、ThreeState、AutoCheck、Appearance、FlatStyle | 1. Text:string类型,复选框右侧文本,默认空字符串;2. Checked:bool类型,是否选中(二态模式),true(选中)、false(未选中,默认);3. CheckState:CheckState枚举,选中状态(三态模式),Unchecked(未选中)、Checked(选中)、Indeterminate(不确定,仅ThreeState=true时生效);4. ThreeState:bool类型,是否支持三态,true(支持)、false(二态,默认);5. AutoCheck:bool类型,点击时是否自动切换状态,true(自动切换,默认)、false(需手动设置);6. Appearance:Appearance枚举,显示样式,Normal(默认复选框样式)、Button(按钮样式);7. FlatStyle:FlatStyle枚举,样式风格,同Button控件。 | 1. 二态复选(默认):作用:实现单个选项的勾选/取消,适用于多选场景(如兴趣爱好、功能选项);示例:CheckBox chkMusic = new CheckBox(); chkMusic.Text = "音乐"; chkMusic.Location = new Point(20, 20); chkMusic.AutoSize = true; this.Controls.Add(chkMusic); CheckBox chkSports = new CheckBox(); chkSports.Text = "运动"; chkSports.Location = new Point(80, 20); chkSports.AutoSize = true; this.Controls.Add(chkSports);说明:创建“音乐”“运动”两个复选框,AutoSize=true自动适应文本,用户可同时勾选多个。2. 三态复选(ThreeState=true):示例:CheckBox chkAll = new CheckBox(); chkAll.Text = "全选(包含部分选中)"; chkAll.Location = new Point(20, 50); chkAll.AutoSize = true; chkAll.ThreeState = true; chkAll.CheckStateChanged += ChkAll_CheckStateChanged; this.Controls.Add(chkAll);说明:支持未选中、选中、不确定三种状态,常用于“全选”场景(如列表部分选中时,全选框显示不确定状态)。3. 按钮样式复选(Appearance=Button):示例:CheckBox chkDarkMode = new CheckBox(); chkDarkMode.Text = "深色模式"; chkDarkMode.Location = new Point(20, 80); chkDarkMode.Size = new Size(100, 30); chkDarkMode.Appearance = Appearance.Button; chkDarkMode.FlatStyle = FlatStyle.Flat; this.Controls.Add(chkDarkMode);说明:复选框显示为按钮样式,勾选时按钮高亮,适用于切换类功能(如模式切换)。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 多选场景:多个CheckBox组合实现多选,无需额外分组;- 全选逻辑:三态复选常用于“全选”控制,需通过CheckStateChanged事件同步子选项状态;- AutoSize建议:优先设为true,避免文本溢出;按钮样式时需手动设置Size;3. 注意事项:- 三态取值:ThreeState=true时,Checked属性在CheckState=Indeterminate时返回false,需通过CheckState判断完整状态;- AutoCheck=false:点击时不自动切换状态,需在Click事件中手动设置Checked/CheckState;- 按钮样式:Appearance=Button时,Checked=true时按钮显示按下状态,与普通按钮区分;- 事件选择:状态变化用CheckStateChanged事件(覆盖三态),二态场景可用CheckedChanged事件。 |
| CheckBoxList(复选框列表控件) | 一、基础公共属性(继承自ListControl):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag、DataSource、DisplayMember、ValueMember二、CheckBoxList特有核心属性:1. Items、CheckedItems、CheckedIndices、CheckOnClick、SelectionMode、ColumnWidth、MultiColumn、HorizontalScrollbar | 1. Items:ListBox.ObjectCollection类型,列表项集合;2. CheckedItems:CheckedListBox.CheckedItemCollection类型,被选中的项集合;3. CheckedIndices:CheckedListBox.CheckedIndexCollection类型,被选中项的索引集合;4. CheckOnClick:bool类型,是否点击项时直接勾选/取消勾选,true(直接操作,默认)、false(需双击或先选中再勾选);5. SelectionMode:SelectionMode枚举,选择模式,仅支持None(不可选)和One(单选),默认None;6. MultiColumn:bool类型,是否支持多列显示,true(支持)、false(不支持,默认);7. ColumnWidth:int类型,多列显示时的列宽,默认0(自动适应)。 | 1. 多选项勾选场景:作用:批量展示可勾选选项,适用于多条件筛选、权限分配、兴趣选择等场景;示例:// 创建CheckBoxList CheckedListBox cblPermissions = new CheckedListBox(); cblPermissions.Location = new Point(20, 20); cblPermissions.Size = new Size(200, 180); cblPermissions.CheckOnClick = true; cblPermissions.MultiColumn = false; // 添加选项 cblPermissions.Items.AddRange(new object[] { "查看数据", "新增数据", "编辑数据", "删除数据", "导出数据", "导入数据" }); // 默认勾选部分选项 cblPermissions.SetItemChecked(0, true); // 查看数据 cblPermissions.SetItemChecked(1, true); // 新增数据 // 确认按钮 Button btnConfirm = new Button(); btnConfirm.Text = "确认选择"; btnConfirm.Location = new Point(20, 210); btnConfirm.Click += (s, e) => { // 获取选中的选项 StringBuilder sb = new StringBuilder(); sb.AppendLine("选中的权限:"); foreach (var item in cblPermissions.CheckedItems) { sb.AppendLine(item.ToString()); } MessageBox.Show(sb.ToString()); }; this.Controls.Add(cblPermissions); this.Controls.Add(btnConfirm);说明:创建复选框列表,添加权限相关选项,默认勾选“查看数据”和“新增数据”,点击确认按钮后收集并展示所有选中的权限,适用于用户权限分配场景。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 选项数量:选项数量较多时可开启MultiColumn=true实现多列显示,或设置HorizontalScrollbar=true显示水平滚动条;- 勾选操作:建议开启CheckOnClick=true,提升操作便捷性,避免用户多次点击;- 数据绑定:通过DataSource、DisplayMember、ValueMember绑定数据源(如List<权限类>),实现动态加载选项;3. 注意事项:- 选择模式限制:SelectionMode仅支持None和One,无法实现多项选中(勾选不等于选中);- 勾选状态设置:通过SetItemChecked(int index, bool value)设置指定索引项的勾选状态,通过SetItemCheckState设置勾选状态(Checked/Unchecked/Indeterminate);- 空值处理:绑定数据源时需确保DisplayMember和ValueMember对应字段非空,避免异常;- 事件:常用ItemCheck(项勾选状态变化时)事件。 |
| CheckedListBox(复选列表框控件) | 一、基础公共属性(继承自ListBox):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag、Items、SelectionMode二、CheckedListBox特有核心属性:1. CheckedItems、CheckedIndices、CheckOnClick、ThreeDCheckBoxes、SelectionMode | 1. CheckedItems:CheckedListBox.CheckedItemCollection类型,所有被勾选的项集合;2. CheckedIndices:CheckedListBox.CheckedIndexCollection类型,所有被勾选项的索引集合;3. CheckOnClick:bool类型,是否点击项时直接勾选/取消,true(直接勾选,默认false)、false(先选中再勾选);4. ThreeDCheckBoxes:bool类型,复选框是否显示3D效果,true(3D效果)、false(平面效果,默认);5. SelectionMode:SelectionMode枚举,选择模式,仅支持None、One(默认),不支持多选(多选通过勾选实现)。 | 1. 基础复选列表:作用:展示带复选框的列表,支持批量勾选,适用于多选场景(如权限选择、文件批量操作);示例:CheckedListBox clbPermissions = new CheckedListBox(); clbPermissions.Location = new Point(20, 20); clbPermissions.Size = new Size(200, 150); clbPermissions.CheckOnClick = true; // 添加权限选项 clbPermissions.Items.AddRange(new string[] { "查看数据", "添加数据", "编辑数据", "删除数据", "导出数据" }); // 默认勾选部分选项 clbPermissions.SetItemChecked(0, true); clbPermissions.SetItemChecked(1, true); this.Controls.Add(clbPermissions);说明:创建权限复选列表,点击项直接勾选,默认勾选“查看数据”和“添加数据”,用户可快速批量选择权限。2. 获取勾选项:示例:// 按钮点击获取勾选项 Button btnGetChecked = new Button(); btnGetChecked.Text = "获取选中权限"; btnGetChecked.Location = new Point(20, 180); btnGetChecked.Size = new Size(120, 30); btnGetChecked.Click += (s, e) => { List<string> selectedPermissions = new List<string>(); // 遍历所有勾选项 foreach (var item in clbPermissions.CheckedItems) { selectedPermissions.Add(item.ToString()); } MessageBox.Show("选中的权限:" + string.Join(",", selectedPermissions)); }; this.Controls.Add(btnGetChecked);说明:通过CheckedItems集合遍历所有勾选项,将结果拼接后显示,适用于提交多选结果的场景。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 多选优先:需要用户选择多个选项时,优先使用CheckedListBox,优于多个CheckBox组合;- CheckOnClick建议:设为true,点击项直接勾选,提升操作效率;- 数据绑定:支持绑定数据源(如List<T>),通过DisplayMember设置显示文本;3. 注意事项:- 选择模式限制:SelectionMode仅支持None和One,多选功能通过勾选实现,而非选中;- 勾选状态设置:通过SetItemChecked(int index, bool value)设置指定项的勾选状态;通过SetItemCheckState设置三态状态(需启用ThreeState);- 三态支持:默认二态,设置ThreeState=true后支持CheckState.Unchecked、Checked、Indeterminate三种状态;- 与ListBox区别:CheckedListBox自带复选框,支持批量勾选;ListBox需手动实现勾选逻辑(如添加CheckBox子控件);- 性能优化:大量数据(千级以上)建议使用VirtualMode虚拟模式,避免一次性加载所有项。 |
| ColorDialog(颜色对话框控件) | 一、基础公共属性(继承自CommonDialog):1. Name、Tag、Color、AllowFullOpen、FullOpen、AnyColor、SolidColorOnly、CustomColors | 1. Color:Color类型,用户选中的颜色,默认黑色;2. AllowFullOpen:bool类型,是否允许用户打开完整的颜色设置面板(自定义颜色),true(允许,默认)、false(禁止);3. FullOpen:bool类型,是否直接打开完整的颜色面板,true(直接打开)、false(默认打开简化面板);4. AnyColor:bool类型,是否允许选择任何颜色(包括系统颜色),true(允许,默认)、false(仅允许选择预定义颜色);5. SolidColorOnly:bool类型,是否仅允许选择纯色(禁止选择渐变颜色),true(仅纯色)、false(允许渐变,默认);6. CustomColors:int[]类型,用户自定义颜色的数组。 | 1. 选择颜色设置控件背景:作用:让用户选择颜色,适用于界面主题设置、文本颜色调整、图形绘制颜色选择等场景;示例:// 创建颜色对话框 ColorDialog cd = new ColorDialog(); cd.AllowFullOpen = true; cd.FullOpen = false; cd.AnyColor = true; cd.SolidColorOnly = true; cd.Color = Color.LightBlue; // 默认选中颜色 // 创建按钮触发对话框 Button btnSelectColor = new Button(); btnSelectColor.Text = "选择背景色"; btnSelectColor.Location = new Point(20, 20); btnSelectColor.Size = new Size(120, 30); this.Controls.Add(btnSelectColor); // 创建面板用于展示选中的颜色 Panel pnlPreview = new Panel(); pnlPreview.Location = new Point(20, 60); pnlPreview.Size = new Size(300, 150); pnlPreview.BackColor = cd.Color; this.Controls.Add(pnlPreview); // 按钮点击事件 btnSelectColor.Click += (s, e) => { if (cd.ShowDialog() == DialogResult.OK) { // 更新面板背景色和按钮前景色 pnlPreview.BackColor = cd.Color; btnSelectColor.ForeColor = cd.Color; } };说明:创建颜色对话框,允许用户打开完整颜色面板,仅选择纯色,默认颜色为浅蓝色,点击按钮选择颜色后,更新预览面板的背景色和按钮的前景色,直观展示选中颜色效果。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 颜色限制:根据场景设置SolidColorOnly(如绘制纯色图形设为true,渐变填充设为false);- 默认颜色:设置合理的默认颜色(如界面背景色默认白色,文本颜色默认黑色);- 自定义颜色:可通过CustomColors属性预设常用自定义颜色,提升用户体验;3. 注意事项:- 颜色应用:选中颜色后需手动应用到目标控件(如背景色、前景色、画笔颜色);- 完整面板:AllowFullOpen=true时,用户可通过“定义自定义颜色”按钮打开完整面板,设置任意颜色;- 颜色转换:Color类型可转换为RGB、十六进制等格式(如ColorTranslator.ToHtml(cd.Color)转换为十六进制颜色码);- 与FontDialog区别:ColorDialog用于选择颜色,FontDialog用于选择字体样式(字体、大小、颜色等)。 |
| ComboBox(组合框控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、ComboBox特有核心属性:1. Items、ItemsSource(.NET 5+)、Text、SelectedItem、SelectedIndex、SelectedValue、SelectedValuePath、DropDownStyle、DropDownWidth、DropDownHeight、MaxDropDownItems、AutoCompleteMode、AutoCompleteSource | 1. Items:ComboBox.ObjectCollection类型,下拉选项集合,可直接添加元素;2. Text:string类型,输入框文本(DropDownStyle=DropDown时可编辑),默认空字符串;3. SelectedItem:object类型,选中的选项对象,默认null;4. SelectedIndex:int类型,选中选项的索引,-1(无选中,默认)、0(第一个选项);5. DropDownStyle:ComboBoxStyle枚举,下拉样式,DropDown(可编辑输入框+下拉列表,默认)、DropDownList(仅下拉列表,不可编辑)、Simple(简单列表,始终显示);6. AutoCompleteMode/AutoCompleteSource:自动完成相关属性,控制输入时的联想提示。 | 1. 基础下拉列表(DropDownStyle=DropDownList):作用:提供预设选项的下拉选择,适用于固定选项选择(如省份、学历);示例:ComboBox cboProvince = new ComboBox(); cboProvince.Location = new Point(20, 20); cboProvince.Size = new Size(150, 25); cboProvince.DropDownStyle = ComboBoxStyle.DropDownList; // 添加选项 cboProvince.Items.AddRange(new string[] { "北京", "上海", "广州", "深圳" }); cboProvince.SelectedIndex = 0; // 默认选中第一个 this.Controls.Add(cboProvince);说明:创建省份下拉列表,不可编辑,仅能选择预设选项,默认选中“北京”。2. 可编辑下拉(DropDownStyle=DropDown):示例:ComboBox cboCity = new ComboBox(); cboCity.Location = new Point(20, 50); cboCity.Size = new Size(150, 25); cboCity.DropDownStyle = ComboBoxStyle.DropDown; cboCity.Items.AddRange(new string[] { "朝阳", "海淀", "东城", "西城" }); // 启用自动完成 cboCity.AutoCompleteMode = AutoCompleteMode.SuggestAppend; cboCity.AutoCompleteSource = AutoCompleteSource.ListItems; this.Controls.Add(cboCity);说明:可编辑输入框,支持手动输入或选择下拉选项,输入时自动联想提示列表项,提升输入效率。3. 绑定数据源(ItemsSource,.NET 5+):示例:// 数据源 List<Department> depts = new List<Department>() { new Department(){ Id=1, Name="技术部" }, new Department(){ Id=2, Name="人事部" } }; ComboBox cboDept = new ComboBox(); cboDept.Location = new Point(20, 80); cboDept.Size = new Size(150, 25); cboDept.DropDownStyle = ComboBoxStyle.DropDownList; cboDept.DataSource = depts; cboDept.DisplayMember = "Name"; // 显示文本字段 cboDept.ValueMember = "Id"; // 实际值字段 this.Controls.Add(cboDept);说明:绑定自定义对象列表,显示部门名称,实际存储部门ID,适用于数据绑定场景。 | 1. 兼容性:支持所有WinForm版本,ItemsSource仅.NET 5+支持(旧版本用DataSource+BindingSource);2. 使用规范:- 样式选择:固定选项用DropDownList(不可编辑,避免无效输入);需手动输入补充用DropDown;- 数据绑定:绑定对象列表时,务必设置DisplayMember(显示文本)和ValueMember(实际值);- 自动完成:可编辑场景建议启用AutoCompleteMode/AutoCompleteSource,提升用户体验;3. 注意事项:- 选中项判断:未选中时SelectedIndex=-1、SelectedItem=null,需避免空引用;- 选项添加:大量选项建议使用Items.AddRange批量添加,优于循环Items.Add;- 下拉尺寸:DropDownWidth默认与控件宽度一致,可手动设置更大宽度显示长文本;MaxDropDownItems控制下拉列表最大显示项数(默认8);- 性能优化:绑定大量数据(千级以上)时,建议使用VirtualMode虚拟模式,避免一次性加载所有项导致卡顿。 |
| ContextMenuStrip(上下文菜单控件) | 一、基础公共属性(继承自ToolStrip):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、ContextMenuStrip特有核心属性:1. Items、ShowImageMargin、ShowCheckMargin、AutoClose、CanOverflow、DropShadowEnabled | 1. Items:ToolStripItemCollection类型,菜单项集合(包含ToolStripMenuItem、ToolStripSeparator等);2. ShowImageMargin:bool类型,是否显示菜单项图标边距,true(显示,默认)、false(不显示);3. ShowCheckMargin:bool类型,是否显示菜单项勾选边距,true(显示)、false(不显示,默认);4. AutoClose:bool类型,点击菜单外区域是否自动关闭,true(自动关闭,默认)、false(不关闭);5. CanOverflow:bool类型,菜单项过多时是否显示溢出按钮,true(显示,默认)、false(不显示);6. DropShadowEnabled:bool类型,是否显示下拉阴影,true(显示,默认)、false(不显示)。 | 1. 基础上下文菜单:作用:为控件添加右键菜单,提供快捷操作,适用于文件操作、编辑功能等场景;示例:// 创建上下文菜单 ContextMenuStrip cmsFile = new ContextMenuStrip(); // 添加菜单项 ToolStripMenuItem tsmiOpen = new ToolStripMenuItem("打开"); tsmiOpen.Image = Image.FromFile("open.png"); tsmiOpen.Click += (s, e) => { MessageBox.Show("执行打开操作"); }; cmsFile.Items.Add(tsmiOpen); ToolStripMenuItem tsmiSave = new ToolStripMenuItem("保存"); tsmiSave.Image = Image.FromFile("save.png"); tsmiSave.Click += (s, e) => { MessageBox.Show("执行保存操作"); }; cmsFile.Items.Add(tsmiSave); // 添加分隔符 cmsFile.Items.Add(new ToolStripSeparator()); ToolStripMenuItem tsmiExit = new ToolStripMenuItem("退出"); tsmiExit.Click += (s, e) => { this.Close(); }; cmsFile.Items.Add(tsmiExit); // 为ListView绑定上下文菜单 ListView lvFiles = new ListView(); lvFiles.Location = new Point(20, 20); lvFiles.Size = new Size(300, 200); lvFiles.ContextMenuStrip = cmsFile; this.Controls.Add(lvFiles);说明:创建包含“打开”“保存”“退出”的上下文菜单,添加图标和分隔符,绑定到ListView,右键点击ListView时显示菜单。 | 1. 兼容性:支持所有WinForm版本(.NET Framework 2.0+、.NET Core 3.0+);2. 使用规范:- 菜单分组:功能相关的菜单项放在一起,用ToolStripSeparator分隔不同功能组;- 图标适配:菜单项图标建议尺寸统一(如16x16),提升美观度;- 绑定方式:通过控件的ContextMenuStrip属性绑定,支持为多个控件绑定同一个菜单;3. 注意事项:- 动态菜单:可根据当前选中状态动态添加/移除菜单项(如无选中文件时禁用“删除”菜单);- 快捷键设置:通过ToolStripMenuItem的ShortcutKeys属性设置快捷键(如Keys.Ctrl+S);- 菜单位置:默认跟随鼠标位置显示,也可通过Show(Control, Point)方法指定显示位置;- 与ContextMenu区别:ContextMenuStrip是ContextMenu的升级版,支持更多样式(图标、分隔符)和功能,建议优先使用。 |
| DataGridView(数据网格控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、DataGridView特有核心属性:1. DataSource、Columns、Rows、AutoGenerateColumns、AllowUserToAddRows、AllowUserToDeleteRows、AllowUserToResizeColumns、SelectionMode、ReadOnly、MultiSelect、GridColor、RowHeadersVisible、ColumnHeadersVisible | 1. DataSource:数据源,支持DataTable、List<T>等,是数据绑定的核心属性;2. Columns/Rows:列/行集合,可手动定义列或自动生成;3. AutoGenerateColumns:bool类型,是否自动根据数据源生成列,true(默认)、false(手动定义列);4. AllowUserToAddRows/AllowUserToDeleteRows:是否允许用户添加/删除行,默认true;5. SelectionMode:选择模式,如FullRowSelect(整行选择)、CellSelect(单元格选择,默认);6. ReadOnly:bool类型,是否只读,true(不可编辑,默认false)。 | 1. 基础数据绑定(AutoGenerateColumns=true):作用:展示结构化数据(如表格数据、查询结果),支持编辑、选择、排序等,是WinForm核心数据展示控件;示例:// 模拟数据源 DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[] { new DataColumn("Id", typeof(int)), new DataColumn("Name", typeof(string)), new DataColumn("Age", typeof(int)) }); dt.Rows.Add(1, "张三", 25); dt.Rows.Add(2, "李四", 30); DataGridView dgvUsers = new DataGridView(); dgvUsers.Location = new Point(20, 20); dgvUsers.Size = new Size(350, 200); dgvUsers.DataSource = dt; dgvUsers.AutoGenerateColumns = true; dgvUsers.SelectionMode = DataGridViewSelectionMode.FullRowSelect; // 整行选择 this.Controls.Add(dgvUsers);说明:绑定DataTable数据源,自动生成列,整行选择模式,用户可直观查看用户数据。2. 手动定义列(AutoGenerateColumns=false):示例:DataGridView dgvOrders = new DataGridView(); dgvOrders.Location = new Point(20, 20); dgvOrders.Size = new Size(400, 200); dgvOrders.AutoGenerateColumns = false; dgvOrders.ReadOnly = true; // 手动添加列 dgvOrders.Columns.Add(new DataGridViewTextBoxColumn() { DataPropertyName = "OrderNo", // 绑定数据源字段 HeaderText = "订单号", // 列标题 Width = 120 // 列宽 }); dgvOrders.Columns.Add(new DataGridViewTextBoxColumn() { DataPropertyName = "Amount", HeaderText = "金额", Width = 100, DefaultCellStyle = new DataGridViewCellStyle() { Alignment = DataGridViewContentAlignment.MiddleRight } // 右对齐 }); // 绑定数据源 dgvOrders.DataSource = GetOrderList(); // GetOrderList()返回List<Order> this.Controls.Add(dgvOrders);说明:手动定义列的标题、宽度、对齐方式等,关闭自动生成列,适用于需要精准控制列样式的场景。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 数据源选择:简单场景用DataTable,面向对象场景用List<T>;- 列定义:复杂样式(对齐、格式、只读)建议手动定义列(AutoGenerateColumns=false);- 选择模式:数据展示优先用FullRowSelect,编辑场景可用CellSelect;- 性能优化:大量数据(万级以上)需开启虚拟滚动(VirtualMode=true)、关闭自动生成列、禁用不必要的交互(如排序、编辑);3. 注意事项:- 数据更新:绑定List<T>时,若数据源变化需重新绑定或使用BindingList<T>实现自动更新;- 样式设置:避免在循环中设置单元格样式,建议通过DefaultCellStyle统一设置;- 列宽调整:可设置AutoSizeColumnsMode自动调整列宽(如AllCells、DisplayedCells);- 事件处理:常用事件有CellClick(单元格点击)、SelectionChanged(选中项变化)、CellEndEdit(单元格编辑完成)。 |
| DateTimePicker(日期时间选择器) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、DateTimePicker特有核心属性:1. Value、Format、CustomFormat、ShowCheckBox、Checked、ShowUpDown、MinDate、MaxDate、CalendarFont、CalendarForeColor | 1. Value:DateTime类型,选中的日期时间,默认当前系统时间;2. Format:DateTimePickerFormat枚举,显示格式,Short(短日期,如2025-01-15,默认)、Long(长日期)、Time(仅时间)、Custom(自定义格式);3. CustomFormat:string类型,自定义格式字符串(Format=Custom时生效),如"yyyy-MM-dd HH:mm:ss";4. ShowCheckBox:bool类型,是否显示复选框,true(显示,勾选时生效Value)、false(不显示,默认);5. ShowUpDown:bool类型,是否显示上下调节按钮,true(通过按钮调节日期时间)、false(下拉日历选择,默认);6. MinDate/MaxDate:DateTime类型,可选择的最小/最大日期时间,限制选择范围。 | 1. 基础日期选择(默认格式):作用:快速选择日期时间,适用于生日、预约时间等日期输入场景;示例:DateTimePicker dtpBirthday = new DateTimePicker(); dtpBirthday.Location = new Point(20, 20); dtpBirthday.Size = new Size(150, 25); dtpBirthday.Format = DateTimePickerFormat.Short; dtpBirthday.MinDate = new DateTime(1900, 1, 1); dtpBirthday.MaxDate = DateTime.Now; this.Controls.Add(dtpBirthday);说明:创建短日期格式选择器,限制选择范围为1900年1月1日至当前日期,适用于选择生日。2. 自定义格式(CustomFormat):示例:DateTimePicker dtpAppoint = new DateTimePicker(); dtpAppoint.Location = new Point(20, 50); dtpAppoint.Size = new Size(200, 25); dtpAppoint.Format = DateTimePickerFormat.Custom; dtpAppoint.CustomFormat = "yyyy-MM-dd HH:mm:ss"; dtpAppoint.ShowCheckBox = true; dtpAppoint.Checked = false; // 默认未勾选,不生效时间 this.Controls.Add(dtpAppoint);说明:自定义显示格式为“年-月-日 时:分:秒”,显示复选框,未勾选时时间选择无效,适用于可选填的预约时间场景。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 格式匹配:仅需日期用Short格式,仅需时间用Time格式,精确到时分秒用Custom格式;- 范围限制:务必设置MinDate/MaxDate,避免用户选择无效日期(如未来日期作为生日);- 可选场景:需要用户自主选择是否填写日期时,设置ShowCheckBox=true;3. 注意事项:- 时间精度:默认精确到分钟,若需秒级选择,需用Custom格式并添加秒的格式符;- 勾选状态:ShowCheckBox=true时,Value仅在Checked=true时有效,判断时需先检查Checked属性;- 样式定制:可通过CalendarFont、CalendarForeColor等属性定制日历面板的字体和颜色;- 事件:常用ValueChanged事件监听日期时间变化。 |
| DateTimePicker(日期时间选择器控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag、Text二、DateTimePicker特有核心属性:1. Value、MinDate、MaxDate、Format、CustomFormat、ShowCheckBox、ShowCalendar、ShowTimePicker、DropDownAlign | 1. Value:DateTime类型,当前选中的日期时间,默认DateTime.Now;2. MinDate/MaxDate:DateTime类型,允许选择的最大/最小日期时间,默认限制同MonthCalendar;3. Format:DateTimePickerFormat枚举,日期时间显示格式(Long:长格式,如“2025年1月15日 星期三”;Short:短格式,如“2025-01-15”;Time:仅时间;Custom:自定义格式);4. CustomFormat:string类型,自定义日期时间格式(如“yyyy-MM-dd HH:mm:ss”),仅Format=Custom时有效;5. ShowCheckBox:bool类型,是否显示复选框(勾选时启用选择,取消勾选时清空选择),true(显示)、false(不显示,默认);6. ShowCalendar:bool类型,是否显示下拉日历,true(显示,默认)、false(不显示);7. ShowTimePicker:bool类型,是否显示时间选择器(.NET 5+支持),true(显示)、false(不显示,默认);8. DropDownAlign:LeftRightAlignment枚举,下拉日历的对齐方式(Left:左对齐,默认;Right:右对齐)。 | 1. 日期时间选择场景:作用:下拉式选择日期和时间,适用于出生日期、预约时间、截止时间等单一日期时间选择场景;示例:// 创建DateTimePicker(日期时间选择) DateTimePicker dtpDeadline = new DateTimePicker(); dtpDeadline.Location = new Point(20, 20); dtpDeadline.Size = new Size(200, 25); dtpDeadline.Format = DateTimePickerFormat.Custom; dtpDeadline.CustomFormat = "yyyy-MM-dd HH:mm:ss"; // 自定义格式:年-月-日 时:分:秒 dtpDeadline.Value = DateTime.Now.AddDays(7); // 默认选中7天后的当前时间 dtpDeadline.MinDate = DateTime.Now; // 最小日期为今天 dtpDeadline.MaxDate = DateTime.Now.AddMonths(1); // 最大日期为1个月后 dtpDeadline.ShowCheckBox = true; dtpDeadline.Checked = true; // 默认勾选(启用选择) dtpDeadline.DropDownAlign = LeftRightAlignment.Left; // 标签提示 Label lblTip = new Label(); lblTip.Text = "截止时间:"; lblTip.Location = new Point(20, 50); lblTip.AutoSize = true; // 查看选择按钮 Button btnView = new Button(); btnView.Text = "确认截止时间"; btnView.Location = new Point(20, 80); btnView.Click += (s, e) => { if (dtpDeadline.Checked) { string deadline = dtpDeadline.Value.ToString("yyyy-MM-dd HH:mm:ss"); MessageBox.Show($"确认截止时间:{deadline}"); } else { MessageBox.Show("未选择截止时间!"); } }; this.Controls.Add(dtpDeadline); this.Controls.Add(lblTip); this.Controls.Add(btnView);说明:创建自定义格式的日期时间选择器,显示格式为“年-月-日 时:分:秒”,默认选中7天后的时间,限制选择范围为今天到1个月后,显示复选框控制是否选择;点击确认按钮后,根据复选框状态展示选中的截止时间或提示未选择,适用于任务截止时间等场景。 | 1. 兼容性:支持所有WinForm版本;ShowTimePicker属性仅支持.NET 5+;2. 使用规范:- 格式适配:根据场景选择Format(如出生日期用Short格式,截止时间用Custom格式显示时分秒);- 范围限制:设置MinDate/MaxDate避免无效日期选择(如截止时间不能早于今天);- 复选框启用:需要支持“未选择”状态时,开启ShowCheckBox=true,通过Checked属性判断是否有选择;3. 注意事项:- 自定义格式:CustomFormat支持多种格式符(如yyyy:4位年,MM:2位月,dd:2位日,HH:24小时制时,mm:分,ss:秒);- 时间选择:.NET 5+中开启ShowTimePicker=true可直接在下拉面板中选择时间,无需手动输入;- 文本输入:允许手动输入日期时间,控件会自动校验格式,无效格式会保留原值;- 与MonthCalendar区别:DateTimePicker是下拉式单一日期时间选择,适用于单点选择;MonthCalendar是平铺式日期范围选择,适用于范围选择;- 事件:常用ValueChanged(选中日期时间变化时)、CheckedChanged(复选框状态变化时)事件。 |
| DomainUpDown(域名增减控件) | 一、基础公共属性(继承自UpDownBase):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag、Text、ReadOnly二、DomainUpDown特有核心属性:1. Items、SelectedItem、SelectedIndex、Sorted、Wrap、UpDownAlign、ReadOnly | 1. Items:DomainUpDown.DomainUpDownItemCollection类型,可选择的项集合(支持字符串、自定义对象等);2. SelectedItem:object类型,当前选中的项,默认null;3. SelectedIndex:int类型,当前选中项的索引,默认-1(无选中);4. Sorted:bool类型,是否对项集合进行排序,true(升序排序)、false(按添加顺序排列,默认);5. Wrap:bool类型,当到达第一项/最后一项时,是否循环滚动,true(循环,如最后一项点击上箭头到第一项)、false(不循环,默认);6. UpDownAlign:LeftRightAlignment枚举,增减按钮的对齐方式(Left:左对齐;Right:右对齐,默认);7. ReadOnly:bool类型,是否禁止手动输入文本,true(只读,仅通过箭头切换)、false(允许输入,默认)。 | 1. 固定选项切换场景:作用:通过上下箭头切换预设的固定选项,适用于类型选择、等级切换、状态选择等场景;示例:// 创建DomainUpDown(类型选择) DomainUpDown dudType = new DomainUpDown(); dudType.Location = new Point(20, 20); dudType.Size = new Size(150, 25); dudType.ReadOnly = true; // 禁止手动输入,仅通过箭头切换 dudType.Sorted = false; // 按添加顺序排列 dudType.Wrap = true; // 支持循环滚动 dudType.UpDownAlign = LeftRightAlignment.Right; // 添加选项(数据类型) dudType.Items.AddRange(new object[] { "字符串(string)", "整数(int)", "浮点数(float)", "布尔值(bool)", "日期时间(DateTime)" }); // 默认选中第一项 dudType.SelectedIndex = 0; // 标签提示 Label lblTip = new Label(); lblTip.Text = "数据类型:"; lblTip.Location = new Point(20, 50); lblTip.AutoSize = true; // 查看选择按钮 Button btnView = new Button(); btnView.Text = "确认选择"; btnView.Location = new Point(20, 80); btnView.Click += (s, e) => { if (dudType.SelectedItem != null) { MessageBox.Show($"选中的数据类型:{dudType.SelectedItem.ToString()}"); } else { MessageBox.Show("请选择数据类型!"); } }; this.Controls.Add(dudType); this.Controls.Add(lblTip); this.Controls.Add(btnView);说明:创建数据类型选择的域名增减控件,添加5种常见数据类型选项,设置为只读模式(仅箭头切换)、支持循环滚动,默认选中第一项;点击确认按钮展示选中的类型,适用于数据类型配置、参数类型选择等场景。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 选项预设:适用于选项数量固定的场景,提前通过Items集合添加所有可选项;- 只读建议:为避免用户输入无效内容,建议设置ReadOnly=true,仅允许通过箭头切换;- 排序适配:选项需要有序排列时设置Sorted=true,按添加顺序展示时保持false;3. 注意事项:- 项类型:Items集合支持任意对象类型,展示时会调用对象的ToString()方法;- 循环滚动:Wrap=true提升操作便捷性,尤其适用于选项数量较少的场景;- 选中状态:默认SelectedIndex=-1(无选中),需手动设置默认选中项提升用户体验;- 与ComboBox区别:DomainUpDown通过箭头切换选项,界面简洁,适用于少量选项;ComboBox通过下拉列表选择,支持搜索(需自定义),适用于较多选项;- 事件:常用SelectedItemChanged(选中项变化时)、SelectedIndexChanged(选中索引变化时)事件。 |
| FlowLayoutPanel(流式布局面板控件) | 一、基础公共属性(继承自Panel):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag、BorderStyle、AutoScroll二、FlowLayoutPanel特有核心属性:1. FlowDirection、WrapContents、AutoSize、AutoSizeMode | 1. FlowDirection:FlowDirection枚举,流式布局方向(LeftToRight:从左到右,默认;TopDown:从上到下;RightToLeft:从右到左;BottomUp:从下到上);2. WrapContents:bool类型,控件超出面板宽度/高度时是否自动换行/换列,true(自动换行,默认)、false(不换行);3. AutoSize:bool类型,是否自动调整面板大小以适应内部控件,true(自动调整)、false(固定大小,默认);4. AutoSizeMode:AutoSizeMode枚举,自动调整大小模式(GrowOnly:仅增大,默认;GrowAndShrink:可增大可缩小)。 | 1. 动态按钮布局场景:作用:自动按指定方向排列内部控件,适用于动态添加控件、按钮组布局、标签云等场景;示例:// 创建FlowLayoutPanel FlowLayoutPanel flpButtons = new FlowLayoutPanel(); flpButtons.Location = new Point(20, 20); flpButtons.Size = new Size(350, 200); flpButtons.FlowDirection = FlowDirection.LeftToRight; flpButtons.WrapContents = true; // 超出宽度自动换行 flpButtons.BorderStyle = BorderStyle.FixedSingle; flpButtons.AutoScroll = true; // 动态添加按钮(模拟标签/功能按钮) string[] buttonTexts = { "标签1", "标签2", "标签3", "标签4", "标签5", "标签6", "标签7", "标签8", "标签9", "标签10" }; foreach (string text in buttonTexts) { Button btn = new Button(); btn.Text = text; btn.Size = new Size(80, 30); btn.Margin = new Padding(5); // 按钮间距 btn.Click += (s, e) => { Button clickedBtn = (Button)s; MessageBox.Show($"点击了:{clickedBtn.Text}"); }; flpButtons.Controls.Add(btn); } // 添加按钮(动态增加控件) Button btnAdd = new Button(); btnAdd.Text = "添加标签"; btnAdd.Location = new Point(20, 230); btnAdd.Click += (s, e) => { Button newBtn = new Button(); newBtn.Text = $"标签{flpButtons.Controls.Count + 1}"; newBtn.Size = new Size(80, 30); newBtn.Margin = new Padding(5); flpButtons.Controls.Add(newBtn); }; this.Controls.Add(flpButtons); this.Controls.Add(btnAdd);说明:创建从左到右流式布局的面板,动态添加10个标签按钮,超出面板宽度时自动换行,开启自动滚动功能;点击添加标签按钮可动态增加新的标签按钮,面板会自动调整布局,适用于标签云、动态功能按钮组等场景。 | 1. 兼容性:支持.NET Framework 2.0+、.NET Core 3.0+、.NET 5+;2. 使用规范:- 布局方向选择:常规按钮组用LeftToRight(从左到右),列表类控件用TopDown(从上到下);- 间距统一:通过控件的Margin属性设置统一的间距,提升布局美观度;- 自动换行开启:WrapContents=true确保控件不会超出面板范围,适用于动态添加控件的场景;3. 注意事项:- 自动布局特性:内部控件的Location属性由FlowLayoutPanel自动管理,手动设置无效;- 大小适配:AutoSize=true时,面板会根据内部控件的总大小自动调整自身大小;AutoSize=false时,需手动设置面板Size,超出部分通过AutoScroll=true显示滚动条;- 嵌套使用:支持嵌套FlowLayoutPanel实现复杂流式布局(如内层垂直流式,外层水平流式);- 与TableLayoutPanel区别:FlowLayoutPanel按“流式方向”自动排列,适用于动态数量的同类型控件;TableLayoutPanel按“表格网格”排列,适用于固定行列的控件布局;- 性能优化:动态添加大量控件时,建议先暂停布局(SuspendLayout()),添加完成后恢复布局(ResumeLayout()),提升加载速度。 |
| FolderBrowserDialog(文件夹浏览对话框控件) | 一、基础公共属性(继承自CommonDialog):1. Name、Tag、Description、SelectedPath、RootFolder、ShowNewFolderButton | 1. Description:string类型,对话框中的描述文本(提示用户操作);2. SelectedPath:string类型,用户选中的文件夹路径;3. RootFolder:Environment.SpecialFolder枚举,对话框的根文件夹(如桌面、我的文档),默认Desktop;4. ShowNewFolderButton:bool类型,是否显示“新建文件夹”按钮,true(显示,默认)、false(隐藏)。 | 1. 选择文件夹并显示文件列表:作用:让用户选择文件夹,适用于文件夹导入、批量文件处理、文件保存路径选择等场景;示例:// 创建文件夹浏览对话框 FolderBrowserDialog fbd = new FolderBrowserDialog(); fbd.Description = "请选择要查看的文件夹"; fbd.RootFolder = Environment.SpecialFolder.MyDocuments; fbd.ShowNewFolderButton = true; // 选择按钮 Button btnSelect = new Button(); btnSelect.Text = "选择文件夹"; btnSelect.Location = new Point(20, 20); btnSelect.Size = new Size(120, 30); btnSelect.Click += (s, e) => { if (fbd.ShowDialog() == DialogResult.OK) { // 获取选中文件夹路径并显示 Label lblPath = new Label(); lblPath.Text = $"选中文件夹:{fbd.SelectedPath}"; lblPath.Location = new Point(20, 60); lblPath.AutoSize = true; this.Controls.Add(lblPath); // 列出文件夹内的文件 ListBox lbFiles = new ListBox(); lbFiles.Location = new Point(20, 90); lbFiles.Size = new Size(350, 200); string[] files = Directory.GetFiles(fbd.SelectedPath); foreach (string file in files) { lbFiles.Items.Add(Path.GetFileName(file)); } this.Controls.Add(lbFiles); } }; this.Controls.Add(btnSelect);说明:创建文件夹浏览对话框,提示用户选择文件夹,根目录为“我的文档”,显示新建文件夹按钮,选择后显示选中文件夹路径,并在列表框中列出文件夹内的文件。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 描述清晰:Description属性需明确提示用户选择文件夹的目的(如“请选择要导入文件的文件夹”);- 根目录合理:根据业务场景设置RootFolder(如批量处理图片设为MyPictures,处理文档设为MyDocuments);- 新建按钮控制:允许用户创建新文件夹时保留ShowNewFolderButton=true,否则设为false;3. 注意事项:- 路径校验:选中路径后建议检查是否存在且可访问,避免后续操作失败;- 权限问题:访问系统文件夹(如Program Files)可能需要管理员权限,建议引导用户选择个人目录;- 文件获取:通过Directory类的GetFiles()/GetDirectories()方法获取选中文件夹内的文件/子文件夹;- 与OpenFileDialog区别:FolderBrowserDialog用于选择文件夹,OpenFileDialog用于选择单个/多个文件。 |
| FontDialog(字体对话框控件) | 一、基础公共属性(继承自CommonDialog):1. Name、Tag、Font、Color、ShowColor、ShowEffects、ShowFontNames、ShowPreview、MaxSize、MinSize | 1. Font:Font类型,用户选中的字体(包含字体名称、大小、样式);2. Color:Color类型,用户选中的文本颜色(ShowColor=true时有效);3. ShowColor:bool类型,是否显示颜色选择功能,true(显示)、false(不显示,默认);4. ShowEffects:bool类型,是否显示字体效果选项(如删除线、下划线),true(显示,默认)、false(不显示);5. ShowPreview:bool类型,是否显示字体预览区域,true(显示,默认)、false(不显示);6. MaxSize/MinSize:int类型,允许选择的最大/最小字体大小,默认无限制。 | 1. 选择字体设置文本样式:作用:让用户选择字体样式(字体、大小、颜色、效果),适用于文本编辑、文档格式化等场景;示例:// 创建字体对话框 FontDialog fd = new FontDialog(); fd.ShowColor = true; // 显示颜色选择 fd.ShowEffects = true; fd.ShowPreview = true; fd.MinSize = 8; fd.MaxSize = 24; fd.Font = new Font("微软雅黑", 12, FontStyle.Regular); // 默认字体 fd.Color = Color.Black; // 默认颜色 // 创建富文本框(用于展示字体效果) RichTextBox rtb = new RichTextBox(); rtb.Location = new Point(20, 20); rtb.Size = new Size(350, 200); rtb.Text = "字体效果预览:Hello World!"; rtb.Font = fd.Font; rtb.ForeColor = fd.Color; this.Controls.Add(rtb); // 选择字体按钮 Button btnSelectFont = new Button(); btnSelectFont.Text = "选择字体"; btnSelectFont.Location = new Point(20, 230); btnSelectFont.Size = new Size(100, 30); btnSelectFont.Click += (s, e) => { if (fd.ShowDialog() == DialogResult.OK) { // 更新富文本框的字体和颜色 rtb.Font = fd.Font; rtb.ForeColor = fd.Color; } }; this.Controls.Add(btnSelectFont);说明:创建字体对话框,显示颜色选择和字体效果选项,限制字体大小8-24号,默认字体为微软雅黑12号,点击按钮选择字体后,更新富文本框的字体和文本颜色,实时展示字体效果。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 功能开启:需要设置文本颜色时开启ShowColor=true,不需要时关闭以简化界面;- 大小限制:根据文本展示场景设置MaxSize/MinSize(如备注文本最小8号,标题最大24号);- 默认字体:选择系统常用字体(如微软雅黑、宋体)作为默认字体,确保兼容性;3. 注意事项:- 字体兼容性:选中的字体需确保目标机器存在,否则会显示默认字体;- 效果应用:ShowEffects=true时,用户可选择删除线、下划线等效果,需通过FontStyle属性获取并应用;- 颜色关联:ShowColor=true时,Color属性与Font属性独立,需分别应用到目标控件;- 资源释放:使用完成后调用Dispose()方法释放资源;- 与RichTextBox配合:RichTextBox可直接应用FontDialog选中的字体、颜色和效果,无需额外处理样式。 |
| GroupBox(分组框控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、GroupBox特有核心属性:1. Text、FlatStyle、BorderStyle、TabStop | 1. Text:string类型,分组框标题文本,默认空字符串;2. FlatStyle:FlatStyle枚举,样式风格,Standard(标准,默认)、Flat(扁平)、Popup(悬浮高亮)、System(系统样式);3. BorderStyle:BorderStyle枚举,边框样式,FixedSingle(单边框,默认)、Fixed3D(3D边框)、None(无边框);4. TabStop:bool类型,是否参与Tab键导航,true(参与)、false(不参与,默认)。 | 1. 基础控件分组:作用:将相关控件分组,提升界面层次感,适用于表单分区(如个人信息、联系信息);示例:// 创建分组框 GroupBox gbPersonal = new GroupBox(); gbPersonal.Text = "个人基本信息"; gbPersonal.Location = new Point(20, 20); gbPersonal.Size = new Size(300, 180); this.Controls.Add(gbPersonal); // 向分组框添加控件 Label lblName = new Label(); lblName.Text = "姓名:"; lblName.Location = new Point(20, 30); lblName.AutoSize = true; gbPersonal.Controls.Add(lblName); TextBox txtName = new TextBox(); txtName.Location = new Point(80, 30); txtName.Size = new Size(180, 25); gbPersonal.Controls.Add(txtName);说明:创建“个人基本信息”分组框,内部添加姓名标签和输入框,将相关控件归类,界面结构清晰。2. 扁平样式分组框:示例:GroupBox gbContact = new GroupBox(); gbContact.Text = "联系信息"; gbContact.Location = new Point(20, 220); gbContact.Size = new Size(300, 150); gbContact.FlatStyle = FlatStyle.Flat; gbContact.ForeColor = Color.FromArgb(64, 64, 64); this.Controls.Add(gbContact);说明:设置扁平样式,修改标题颜色,适配现代简约风格界面。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 分组逻辑:仅将功能相关的控件(如同一类表单字段)放入同一GroupBox,避免过度分组;- 标题简洁:Text属性建议简洁明了,突出分组主题(如“个人信息”“支付方式”);- 布局建议:分组框内控件的Location相对分组框定位,而非窗体;3. 注意事项:- 容器特性:GroupBox是容器控件,需通过Controls.Add将子控件添加到其Controls集合中;- 启用状态:设置GroupBox.Enabled=false时,内部所有子控件同步禁用,无需逐个设置;- 边框隐藏:BorderStyle=None时,仅显示标题,无边框,适用于轻度分组场景;- 与Panel区别:GroupBox带有标题,侧重逻辑分组;Panel无标题,侧重布局容器(如滚动、边框)。 |
| HScrollBar/VScrollBar(水平/垂直滚动条控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Cursor、Tag二、滚动条特有核心属性:1. Minimum、Maximum、Value、SmallChange、LargeChange、Orientation、Visible | 1. Minimum/Maximum:int类型,滚动条的最小/最大值,默认0/100;2. Value:int类型,当前滚动位置,默认0,取值范围在Minimum和Maximum之间;3. SmallChange:int类型,点击滚动条两端箭头时的增减步长,默认1;4. LargeChange:int类型,点击滚动条滑块两侧空白区域时的增减步长,默认10;5. Orientation:Orientation枚举,滚动条方向(HScrollBar默认Horizontal,VScrollBar默认Vertical);6. Visible:bool类型,是否显示滚动条,true(显示,默认)、false(隐藏)。 | 1. 自定义垂直滚动条:作用:手动控制其他控件的滚动,适用于自定义滚动场景(如自定义列表、图片浏览);示例:// 创建自定义内容面板 Panel pnlContent = new Panel(); pnlContent.Location = new Point(20, 20); pnlContent.Size = new Size(250, 200); pnlContent.BackColor = Color.White; pnlContent.BorderStyle = BorderStyle.FixedSingle; this.Controls.Add(pnlContent); // 创建垂直滚动条 VScrollBar vScroll = new VScrollBar(); vScroll.Location = new Point(270, 20); vScroll.Size = new Size(20, 200); vScroll.Minimum = 0; vScroll.Maximum = 300; // 内容总高度300 vScroll.SmallChange = 10; vScroll.LargeChange = 50; vScroll.Scroll += (s, e) => { // 滚动时调整内容面板的位置 pnlContent.AutoScrollPosition = new Point(0, -vScroll.Value); }; this.Controls.Add(vScroll);说明:创建独立的垂直滚动条,滚动时通过调整内容面板的AutoScrollPosition实现滚动效果,适用于自定义滚动逻辑的场景。2. 水平滚动条控制图片:示例:PictureBox pbImage = new PictureBox(); pbImage.Location = new Point(20, 20); pbImage.Size = new Size(250, 150); pbImage.Image = Image.FromFile("largeImage.jpg"); pbImage.SizeMode = PictureBoxSizeMode.AutoSize; this.Controls.Add(pbImage); HScrollBar hScroll = new HScrollBar(); hScroll.Location = new Point(20, 180); hScroll.Size = new Size(250, 20); hScroll.Minimum = 0; hScroll.Maximum = pbImage.Width - 250; hScroll.Scroll += (s, e) => { pbImage.Left = 20 - hScroll.Value; }; this.Controls.Add(hScroll);说明:水平滚动条控制大图片的水平移动,实现图片的横向浏览。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 自定义滚动:仅在Panel的AutoScroll无法满足需求时使用(如自定义滚动逻辑、控制非容器控件);- 步长设置:SmallChange建议为内容的最小单位(如1像素),LargeChange建议为可视区域的1/5~1/3;- 最大值计算:Maximum应设置为“内容总尺寸 - 可视区域尺寸”,确保滚动到最末端时内容完全显示;3. 注意事项:- 联动逻辑:需要手动编写Scroll事件处理程序,实现滚动条与目标控件的联动;- 隐藏条件:当内容尺寸≤可视区域尺寸时,设置Visible=false,避免显示无效滚动条;- 与Panel.AutoScroll区别:Panel.AutoScroll自动关联子控件,无需手动编写联动逻辑;独立滚动条灵活性更高,但需手动控制;- 事件:核心事件为Scroll,用于监听滚动位置变化;ValueChanged事件也可监听滚动位置变化,但触发时机晚于Scroll。 |
| ImageList(图像列表控件) | 一、基础公共属性(继承自Component):1. Name、Tag二、ImageList特有核心属性:1. Images、ImageSize、ColorDepth、TransparentColor、ImageStream | 1. Images:ImageList.ImageCollection类型,存储图像的集合;2. ImageSize:Size类型,集合中所有图像的统一尺寸,默认16x16;3. ColorDepth:ColorDepth枚举,图像颜色深度(如4位、8位、24位),默认Depth32Bit(32位真彩色);4. TransparentColor:Color类型,图像的透明色,默认Transparent(完全透明);5. ImageStream:ImageListStreamer类型,用于序列化图像列表的流对象。 | 1. 为TreeView提供图标:作用:统一管理一组图像资源,供其他控件(TreeView、ListView、ToolStrip等)使用,适用于图标统一管理场景;示例:// 创建ImageList并添加图标 ImageList imgList = new ImageList(); imgList.ImageSize = new Size(24, 24); // 图标尺寸24x24 imgList.ColorDepth = ColorDepth.Depth32Bit; imgList.TransparentColor = Color.Magenta; // 将品红色设为透明色 // 添加图像资源(从文件加载) imgList.Images.Add("home", Image.FromFile("home.png")); imgList.Images.Add("user", Image.FromFile("user.png")); imgList.Images.Add("setting", Image.FromFile("setting.png")); // 为TreeView绑定ImageList TreeView tv = new TreeView(); tv.Location = new Point(20, 20); tv.Size = new Size(200, 200); tv.ImageList = imgList; // 添加带图标的节点 TreeNode root = new TreeNode("首页"); root.ImageKey = "home"; root.SelectedImageKey = "home"; TreeNode userNode = new TreeNode("用户管理"); userNode.ImageKey = "user"; userNode.SelectedImageKey = "user"; root.Nodes.Add(userNode); tv.Nodes.Add(root); this.Controls.Add(tv);说明:创建图像列表,统一管理24x24尺寸的图标,设置品红色为透明色,为TreeView的不同节点分配对应图标,实现图标统一管控。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 尺寸统一:ImageSize需提前设置,添加图像时会自动缩放至该尺寸,建议根据使用场景选择(16x16用于菜单/树节点,32x32用于按钮,64x64用于大图标);- 透明色设置:若图像有背景色,可将背景色设为TransparentColor,实现透明效果;- 资源管理:建议使用ImageKey(字符串标识)而非索引引用图像,提升代码可读性;3. 注意事项:- 组件特性:ImageList是Component组件,非Control控件,无需添加到窗体Controls集合;- 性能优化:大量图像(百张以上)建议提前加载并缓存,避免频繁从文件加载;- 图像格式:支持BMP、PNG、JPG等常见图像格式,PNG格式支持透明通道,推荐使用;- 关联控件:常用关联控件有TreeView、ListView、ToolStrip、StatusStrip等,通过控件的ImageList属性绑定。 |
| Label(标签控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、Label特有核心属性:1. Text、AutoSize、TextAlign、BorderStyle、Image、ImageAlign、ImageIndex、ImageList | 1. Text:string类型,显示的文本内容,默认空字符串;2. AutoSize:bool类型,是否自动适应文本大小调整控件尺寸,true(自动适应,默认false)、false(固定尺寸);3. TextAlign:ContentAlignment枚举,文本对齐方式,如TopLeft(左上,默认)、MiddleCenter(居中)等;4. BorderStyle:BorderStyle枚举,边框样式,None(无边框,默认)、FixedSingle(单边框)、Fixed3D(3D边框);5. Image:Image类型,显示的图片,默认null;6. ImageAlign:ContentAlignment枚举,图片对齐方式,默认MiddleLeft。 | 1. 基础文本标签(Text + AutoSize):作用:展示静态文本,常用于表单字段说明、标题提示等场景;示例:Label lblUserName = new Label(); lblUserName.Text = "用户名:"; lblUserName.AutoSize = true; lblUserName.Location = new Point(20, 20); this.Controls.Add(lblUserName);说明:创建“用户名:”标签,自动适应文本大小,定位在窗体(20,20)位置,作为输入框的前置说明。2. 图文结合标签(Image + TextAlign):示例:Label lblNotice = new Label(); lblNotice.Text = "重要提示:请完善个人信息"; lblNotice.AutoSize = true; lblNotice.Image = Image.FromFile("notice.png"); lblNotice.ImageAlign = ContentAlignment.MiddleLeft; lblNotice.TextAlign = ContentAlignment.MiddleRight; lblNotice.Padding = new Padding(5, 0, 0, 0); this.Controls.Add(lblNotice);说明:标签左侧显示提示图标,右侧显示文本,通过Padding设置图文间距,直观传递重要信息。 | 1. 兼容性:支持所有WinForm版本(.NET Framework 1.0+、.NET Core 3.0+、.NET 5+);2. 使用规范:- 静态文本首选:展示无需编辑的文本时优先使用Label,性能优于其他文本控件;- AutoSize建议:作为说明标签时建议设为true,避免文本溢出;固定布局场景可设为false并指定Size;3. 注意事项:- 无交互功能:仅用于显示,用户无法编辑或点击触发操作;- 图片加载:使用Image属性加载本地图片时,需确保路径正确,建议使用相对路径并嵌入资源;- 文本换行:默认不支持自动换行,若需多行文本,需设置AutoSize=false、指定Size,并将Font的WrapMode设为Wrap。 |
| LinkLabel(链接标签控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、LinkLabel特有核心属性:1. Text、LinkColor、ActiveLinkColor、VisitedLinkColor、LinkBehavior、LinkArea、Links、AutoSize | 1. Text:string类型,显示的文本内容,默认空字符串;2. LinkColor:Color类型,未点击时的链接颜色,默认蓝色;3. ActiveLinkColor:Color类型,点击时的链接颜色,默认红色;4. VisitedLinkColor:Color类型,点击后的链接颜色,默认紫色;5. LinkBehavior:LinkBehavior枚举,链接下划线显示方式,AlwaysUnderline(始终下划线,默认)、HoverUnderline(悬浮时下划线)、NeverUnderline(无下划线);6. LinkArea:LinkArea结构,指定文本中作为链接的区域(起始索引和长度);7. Links:LinkLabel.LinkCollection类型,多链接集合(文本中可包含多个链接)。 | 1. 基础单链接:作用:显示可点击的链接,适用于打开网页、文件、跳转页面等交互场景;示例:LinkLabel llWeb = new LinkLabel(); llWeb.Text = "访问官方网站"; llWeb.AutoSize = true; llWeb.Location = new Point(20, 20); llWeb.LinkColor = Color.FromArgb(0, 122, 204); llWeb.ActiveLinkColor = Color.Red; llWeb.LinkBehavior = LinkBehavior.HoverUnderline; llWeb.LinkClicked += LlWeb_LinkClicked; this.Controls.Add(llWeb); // 链接点击事件 private void LlWeb_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { System.Diagnostics.Process.Start("https://example.com"); }说明:创建“访问官方网站”链接标签,悬浮时显示下划线,点击时打开指定网页。2. 文本中多链接:示例:LinkLabel llMulti = new LinkLabel(); llMulti.Text = "联系我们 | 隐私政策 | 用户协议"; llMulti.AutoSize = true; llMulti.Location = new Point(20, 50); llMulti.LinkBehavior = LinkBehavior.HoverUnderline; // 添加多个链接区域 llMulti.Links.Add(0, 4); // “联系我们”(索引0,长度4) llMulti.Links.Add(6, 4); // “隐私政策”(索引6,长度4) llMulti.Links.Add(12, 4); // “用户协议”(索引12,长度4) llMulti.LinkClicked += (s, e) => { // 根据链接索引判断点击的链接 switch (e.Link.Index) { case 0: MessageBox.Show("联系我们"); break; case 1: MessageBox.Show("隐私政策"); break; case 2: MessageBox.Show("用户协议"); break; } }; this.Controls.Add(llMulti);说明:文本中包含三个独立链接,点击不同链接执行不同逻辑,适用于底部导航、多链接说明场景。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 颜色区分:建议LinkColor与普通文本颜色区分明显,提升辨识度;- 下划线策略:HoverUnderline(悬浮下划线)更符合现代UI习惯,避免始终下划线过于突兀;- 多链接定位:添加多链接时,需准确计算LinkArea的起始索引和长度,避免重叠;3. 注意事项:- 链接激活:点击链接后,需调用e.Link.Visited = true; 才能让链接显示为VisitedLinkColor;- 光标样式:默认光标为Hand(手型),无需额外设置;- 打开外部资源:打开网页、文件时,需使用System.Diagnostics.Process.Start(),并添加异常处理(如文件不存在);- 与Label区别:LinkLabel支持链接样式和点击事件;Label仅用于静态文本显示,无交互功能。 |
| ListBox(列表框控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、ListBox特有核心属性:1. Items、ItemsSource(.NET 5+)、SelectedItem、SelectedItems、SelectedIndex、SelectedIndices、SelectionMode、MultiColumn、ScrollAlwaysVisible、HorizontalScrollbar | 1. Items:ListBox.ObjectCollection类型,列表项集合;2. SelectedItem/SelectedItems:单个/多个选中项,SelectedItems适用于多选场景;3. SelectionMode:SelectionMode枚举,选择模式,None(不可选)、One(单选,默认)、MultiSimple(简单多选,点击勾选)、MultiExtended(扩展多选,Ctrl/Shift辅助);4. MultiColumn:bool类型,是否支持多列显示,true(多列)、false(单列,默认);5. ScrollAlwaysVisible/HorizontalScrollbar:滚动条相关属性,控制滚动条显示。 | 1. 单选列表(默认):作用:展示单列单选列表,适用于单个项目选择(如文件列表、用户列表);示例:ListBox lbFiles = new ListBox(); lbFiles.Location = new Point(20, 20); lbFiles.Size = new Size(200, 150); lbFiles.Items.AddRange(new string[] { "文档1.docx", "文档2.xlsx", "文档3.pdf" }); lbFiles.SelectedIndex = 0; // 默认选中第一个 lbFiles.SelectedIndexChanged += LbFiles_SelectedIndexChanged; this.Controls.Add(lbFiles);说明:创建文件列表,单选模式,默认选中第一个文件,选中项变化时触发事件。2. 多选列表(SelectionMode=MultiExtended):示例:ListBox lbUsers = new ListBox(); lbUsers.Location = new Point(20, 20); lbUsers.Size = new Size(200, 150); lbUsers.SelectionMode = SelectionMode.MultiExtended; lbUsers.Items.AddRange(new string[] { "张三", "李四", "王五", "赵六" }); lbUsers.ScrollAlwaysVisible = true; this.Controls.Add(lbUsers);说明:支持扩展多选,按住Ctrl键点击选多个不连续项,按住Shift键选连续项,始终显示垂直滚动条。3. 多列列表(MultiColumn=true):示例:ListBox lbTags = new ListBox(); lbTags.Location = new Point(20, 20); lbTags.Size = new Size(200, 100); lbTags.MultiColumn = true; lbTags.ColumnWidth = 60; // 列宽 lbTags.Items.AddRange(new string[] { "C#", "WinForm", "WPF", "ASP.NET", "SQL", "Redis" }); this.Controls.Add(lbTags);说明:多列显示列表项,列宽60px,适用于大量短文本项的展示,节省垂直空间。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 选择模式匹配:单个选择用One,多个不连续选择用MultiSimple,复杂多选用MultiExtended;- 多列场景:短文本、多数量项用MultiColumn,长文本用单列+水平滚动条;- 数据绑定:大量数据建议用数据绑定(ItemsSource/DataSource),便于维护;3. 注意事项:- 多选取值:MultiSimple/MultiExtended模式下,需通过SelectedItems集合获取所有选中项,而非SelectedItem;- 性能优化:大量数据(千级以上)建议使用VirtualMode虚拟模式,仅加载可视区域项;- 与ComboBox区别:ListBox同时展示多个选项,占用空间较大;ComboBox折叠为下拉列表,节省空间;- 与ListView区别:ListBox功能简单,侧重列表展示;ListView支持图标、详情等多种视图,功能更强大。 |
| ListView(列表视图控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、ListView特有核心属性:1. Items、Columns、View、GridLines、FullRowSelect、MultiSelect、CheckBoxes、Sorting、GroupView、LargeImageList、SmallImageList | 1. Items:ListViewItemCollection类型,列表项集合,每个项可包含多个子项;2. Columns:ColumnHeaderCollection类型,列标题集合(Details视图下生效);3. View:View枚举,显示视图模式,Details(详情模式,默认)、LargeIcon(大图标)、SmallIcon(小图标)、List(列表模式)、Tile(平铺模式);4. GridLines:bool类型,是否显示网格线(Details视图),true(显示)、false(不显示,默认);5. FullRowSelect:bool类型,是否整行选择(Details视图),true(整行)、false(仅选中单元格,默认);6. CheckBoxes:bool类型,是否显示复选框,true(显示)、false(不显示,默认);7. Sorting:SortOrder枚举,排序方式,None(不排序,默认)、Ascending(升序)、Descending(降序)。 | 1. 详情模式(Details):作用:多列展示结构化数据,支持排序、选择,适用于文件列表、数据详情展示;示例:ListView lvFiles = new ListView(); lvFiles.Location = new Point(20, 20); lvFiles.Size = new Size(400, 200); lvFiles.View = View.Details; lvFiles.GridLines = true; lvFiles.FullRowSelect = true; lvFiles.MultiSelect = true; // 添加列标题 lvFiles.Columns.AddRange(new ColumnHeader[] { new ColumnHeader() { Text = "文件名", Width = 150 }, new ColumnHeader() { Text = "大小(KB)", Width = 80, TextAlign = HorizontalAlignment.Right }, new ColumnHeader() { Text = "修改时间", Width = 150 } }); // 添加列表项 ListViewItem item1 = new ListViewItem("文档1.docx"); item1.SubItems.Add("2048"); item1.SubItems.Add("2025-01-15 10:30"); lvFiles.Items.Add(item1); ListViewItem item2 = new ListViewItem("图片1.png"); item2.SubItems.Add("5120"); item2.SubItems.Add("2025-01-14 16:45"); lvFiles.Items.Add(item2); this.Controls.Add(lvFiles);说明:创建详情模式列表视图,显示文件名称、大小、修改时间三列,带网格线,支持整行选择和多选,数据展示清晰。2. 大图标模式(LargeIcon):示例:ListView lvPictures = new ListView(); lvPictures.Location = new Point(20, 20); lvPictures.Size = new Size(300, 200); lvPictures.View = View.LargeIcon; lvPictures.LargeImageList = new ImageList(); lvPictures.LargeImageList.ImageSize = new Size(64, 64); // 添加图标资源 lvPictures.LargeImageList.Images.Add(Image.FromFile("pic1.png")); lvPictures.LargeImageList.Images.Add(Image.FromFile("pic2.png")); // 添加带图标的列表项 lvPictures.Items.Add("风景图1", 0); lvPictures.Items.Add("人物图1", 1); this.Controls.Add(lvPictures);说明:大图标模式展示图片列表,通过ImageList加载图标资源,适用于图片预览、文件图标展示场景。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 视图匹配:多列详情用Details,图片/图标展示用LargeIcon/SmallIcon,简单列表用List;- 列宽设置:Details视图下建议明确设置列宽,避免列标题或内容显示不全;- 性能优化:大量数据(千级以上)建议开启虚拟模式(VirtualMode=true),避免一次性加载所有项;3. 注意事项:- 子项添加:ListViewItem的SubItems集合从索引1开始,索引0为第一列内容;- 图标加载:LargeIcon/SmallIcon模式需配合ImageList使用,设置对应ImageSize;- 排序实现:Sorting仅支持简单排序,复杂排序需自定义排序逻辑(实现IComparer接口);- 事件:常用事件有ItemClick(项点击)、SelectedIndexChanged(选中项变化)、ColumnClick(列标题点击,用于排序)。 |
| MaskedTextBox(掩码文本框控件) | 一、基础公共属性(继承自TextBox):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag、Text、ReadOnly二、MaskedTextBox特有核心属性:1. Mask、MaskFull、PromptChar、ResetOnPrompt、ResetOnSpace、ValidatingType、TextMaskFormat | 1. Mask:string类型,输入掩码字符串,定义输入格式(如日期、电话、身份证);2. MaskFull:bool类型,是否已填满掩码格式要求的所有字符,true(填满)、false(未填满,默认);3. PromptChar:char类型,掩码占位符字符,默认'_';4. ResetOnPrompt:bool类型,输入占位符字符时是否重置对应位置的输入,true(重置)、false(不重置,默认);5. ResetOnSpace:bool类型,输入空格时是否重置对应位置的输入,true(重置,默认)、false(不重置);6. ValidatingType:Type类型,验证数据类型(如typeof(DateTime)、typeof(decimal)),用于格式校验;7. TextMaskFormat:MaskFormat枚举,Text属性返回的文本格式,如IncludePromptAndLiterals(包含占位符和固定字符,默认)。 | 1. 身份证号输入(掩码):作用:强制输入符合指定格式的文本,适用于身份证、电话、邮编等有固定格式的输入场景;示例:MaskedTextBox mtbIDCard = new MaskedTextBox(); mtbIDCard.Location = new Point(20, 20); mtbIDCard.Size = new Size(200, 25); mtbIDCard.Mask = "000000190001010000"; // 身份证号掩码(前6位地区,中间8位出生日期,后4位) mtbIDCard.PromptChar = ' '; // 占位符用空格 mtbIDCard.ValidatingType = typeof(string); this.Controls.Add(mtbIDCard);说明:创建身份证号掩码文本框,强制输入18位数字(旧身份证15位可调整掩码),占位符为空格,确保输入格式规范。2. 电话号码输入(带固定字符):示例:MaskedTextBox mtbPhone = new MaskedTextBox(); mtbPhone.Location = new Point(20, 50); mtbPhone.Size = new Size(150, 25); mtbPhone.Mask = "(000)0000-0000"; // 固定电话掩码(带区号括号和分隔符) mtbPhone.PromptChar = '_'; mtbPhone.ResetOnSpace = false; // 允许输入空格 this.Controls.Add(mtbPhone);说明:掩码包含固定字符“(”“)”“-”,用户仅需输入数字,自动按格式排列,适用于固定电话输入。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 掩码设计:根据输入场景选择合适的掩码(如电话用"(000)0000-0000",日期用"00/00/0000");- 占位符选择:建议用'_'或空格作为占位符,避免使用与输入内容冲突的字符;- 验证配合:设置ValidatingType实现数据类型校验(如日期格式),并处理TypeValidationCompleted事件;3. 注意事项:- 掩码字符含义:0(必须输入数字)、9(可选输入数字)、#(可选输入数字或加减号)、L(必须输入字母)、?(可选输入字母)、A(必须输入字母或数字)等;- Text属性取值:默认包含固定字符和占位符,若需仅获取用户输入的有效字符,设置TextMaskFormat=ExcludePromptAndLiterals;- 输入限制:不符合掩码的字符无法输入,无需额外编写输入限制逻辑;- 清空重置:调用Clear()方法可清空输入内容,恢复占位符状态;- 与TextBox区别:MaskedTextBox强制输入格式,适用于固定格式输入;TextBox无格式限制,适用于自由输入。 |
| MenuStrip(菜单条控件) | 一、基础公共属性(继承自ToolStrip):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、MenuStrip特有核心属性:1. Items、Dock、RenderMode、ShowItemToolTips、GripStyle、AllowMerge | 1. Items:ToolStripItemCollection类型,菜单项集合(包含ToolStripMenuItem、ToolStripSeparator等);2. Dock:DockStyle枚举,停靠方式,Top(顶部,默认)、Bottom;3. RenderMode:ToolStripRenderMode枚举,渲染模式,同ToolStrip控件;4. AllowMerge:bool类型,是否允许菜单合并(如MDI子窗体菜单合并到父窗体),true(允许,默认)、false(不允许);其他属性含义同ToolStrip控件。 | 1. 主菜单条(MDI父窗体):作用:提供软件核心菜单导航,适用于主窗体顶部菜单区;示例:// 创建菜单条 MenuStrip msMain = new MenuStrip(); msMain.Dock = DockStyle.Top; msMain.RenderMode = ToolStripRenderMode.Professional; this.Controls.Add(msMain); this.MainMenuStrip = msMain; // 设置为主菜单条 // 添加“文件”菜单 ToolStripMenuItem tsmiFile = new ToolStripMenuItem("文件(F)"); tsmiFile.ShortcutKeys = Keys.Alt | Keys.F; // 文件菜单子项 ToolStripMenuItem tsmiNew = new ToolStripMenuItem("新建(N)"); tsmiNew.ShortcutKeys = Keys.Ctrl | Keys.N; tsmiNew.Click += (s, e) => { /* 新建逻辑 */ }; tsmiFile.DropDownItems.Add(tsmiNew); ToolStripMenuItem tsmiOpen = new ToolStripMenuItem("打开(O)"); tsmiOpen.ShortcutKeys = Keys.Ctrl | Keys.O; tsmiFile.DropDownItems.Add(tsmiOpen); tsmiFile.DropDownItems.Add(new ToolStripSeparator()); ToolStripMenuItem tsmiExit = new ToolStripMenuItem("退出(X)"); tsmiExit.Click += (s, e) => { this.Close(); }; tsmiFile.DropDownItems.Add(tsmiExit); msMain.Items.Add(tsmiFile); // 添加“编辑”菜单 ToolStripMenuItem tsmiEdit = new ToolStripMenuItem("编辑(E)"); tsmiEdit.DropDownItems.Add("复制(C)", null, (s, e) => { /* 复制逻辑 */ }, Keys.Ctrl | Keys.C); tsmiEdit.DropDownItems.Add("粘贴(V)", null, (s, e) => { /* 粘贴逻辑 */ }, Keys.Ctrl | Keys.V); msMain.Items.Add(tsmiEdit);说明:创建主菜单条,包含“文件”“编辑”菜单,设置快捷键和访问键(Alt+F打开文件菜单),绑定到主窗体,符合标准软件菜单布局。 | 1. 兼容性:支持所有WinForm版本(.NET Framework 2.0+、.NET Core 3.0+);2. 使用规范:- 菜单命名:遵循行业规范(如“文件”“编辑”“视图”“帮助”),子菜单命名简洁(如“新建”“打开”);- 快捷键设置:常用功能设置标准快捷键(如Ctrl+N新建、Ctrl+S保存),提升用户习惯适配;- 访问键:通过菜单项文本中的“(字母)”设置访问键(如“文件(F)”),支持Alt+字母快速打开菜单;3. 注意事项:- 主菜单绑定:需将MenuStrip赋值给窗体的MainMenuStrip属性,才能正常响应快捷键和访问键;- MDI菜单合并:MDI父窗体中设置AllowMerge=true,子窗体菜单可自动合并到父窗体菜单;- 动态菜单:可根据用户权限动态启用/禁用或添加/移除菜单项(如管理员可见“系统设置”菜单);- 与ContextMenuStrip区别:MenuStrip是顶部固定菜单,ContextMenuStrip是右键上下文菜单,功能场景不同。 |
| MonthCalendar(月历控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、MonthCalendar特有核心属性:1. SelectionStart、SelectionEnd、SelectionRange、MaxSelectionCount、FirstDayOfWeek、ShowToday、ShowTodayCircle、ShowWeekNumbers | 1. SelectionStart/SelectionEnd:DateTime类型,选中日期范围的开始/结束日期,默认当前日期;2. SelectionRange:SelectionRange类型,选中的日期范围(包含Start和End);3. MaxSelectionCount:int类型,最多可选中的天数,默认7(1周);4. FirstDayOfWeek:DayOfWeek枚举,每周的第一天,默认Sunday(周日);5. ShowToday:bool类型,是否显示“今天”提示文本,true(显示,默认)、false(不显示);6. ShowTodayCircle:bool类型,是否用圆圈标注今天,true(标注,默认)、false(不标注);7. ShowWeekNumbers:bool类型,是否显示周数,true(显示)、false(不显示,默认)。 | 1. 基础日期选择(单选/多选):作用:直观选择单个或多个日期,适用于日期范围选择(如请假时间、统计周期);示例:MonthCalendar mcDate = new MonthCalendar(); mcDate.Location = new Point(20, 20); mcDate.Size = new Size(220, 180); mcDate.MaxSelectionCount = 30; // 最多选中30天 mcDate.FirstDayOfWeek = DayOfWeek.Monday; // 每周第一天为周一 mcDate.ShowWeekNumbers = true; mcDate.DateSelected += (s, e) => { // 显示选中的日期范围 lblDate.Text = $"选中日期:{e.Start:yyyy-MM-dd} 至 {e.End:yyyy-MM-dd}"; }; this.Controls.Add(mcDate); // 显示选中日期文本 Label lblDate = new Label(); lblDate.Location = new Point(20, 210); lblDate.AutoSize = true; this.Controls.Add(lblDate);说明:创建月历控件,支持最多选中30天,每周第一天设为周一,显示周数,选中日期范围时同步显示到文本标签,适用于日期范围选择场景。2. 设置日期范围限制:示例:MonthCalendar mcLimit = new MonthCalendar(); mcLimit.Location = new Point(20, 20); mcLimit.Size = new Size(220, 180); // 限制选择范围为当前年份 mcLimit.MinDate = new DateTime(DateTime.Now.Year, 1, 1); mcLimit.MaxDate = new DateTime(DateTime.Now.Year, 12, 31); this.Controls.Add(mcLimit);说明:设置月历的最小/最大日期为当前年份的1月1日和12月31日,用户无法选择超出该范围的日期。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 选择范围:根据业务需求设置MaxSelectionCount(如请假最多30天、统计最多7天);- 日期限制:务必设置MinDate/MaxDate,避免用户选择无效日期(如未来日期作为历史统计周期);- 显示优化:中文环境建议将FirstDayOfWeek设为Monday(周一),符合中文使用习惯;3. 注意事项:- 选中范围:SelectionEnd默认比实际选中的最后一天大1天(如选中1-3号,SelectionEnd为4号),显示时需注意;- 尺寸固定:MonthCalendar的Size属性默认固定,手动修改可能导致显示异常,建议使用默认尺寸;- 多月份显示:默认显示1个月,可通过CalendarDimensions属性设置显示多个月份(如new Size(2,1)显示2个月);- 事件:常用DateSelected事件监听日期选择变化,DateChanged事件监听月份切换导致的日期变化。 |
| NumericUpDown(数值调节框控件) | 一、基础公共属性(继承自UpDownBase):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag、Text、ReadOnly二、NumericUpDown特有核心属性:1. Value、Minimum、Maximum、Increment、DecimalPlaces、ThousandsSeparator、Hexadecimal | 1. Value:decimal类型,当前数值,默认0;2. Minimum/Maximum:decimal类型,允许输入的最小/最大值,默认0/100;3. Increment:decimal类型,点击上下箭头时的增减步长,默认1;4. DecimalPlaces:int类型,保留的小数位数,默认0(整数);5. ThousandsSeparator:bool类型,是否显示千位分隔符,true(显示)、false(不显示,默认);6. Hexadecimal:bool类型,是否以十六进制显示数值,true(是)、false(否,默认)。 | 1. 金额输入调节场景:作用:精准输入数值并支持快速调节,适用于金额、数量、年龄、百分比等数值输入场景;示例:// 创建NumericUpDown(金额输入) NumericUpDown nudAmount = new NumericUpDown(); nudAmount.Location = new Point(20, 20); nudAmount.Size = new Size(150, 25); nudAmount.Minimum = 0.00m; nudAmount.Maximum = 10000.00m; nudAmount.Value = 100.00m; nudAmount.Increment = 10.00m; // 步长10元 nudAmount.DecimalPlaces = 2; // 保留2位小数(金额) nudAmount.ThousandsSeparator = true; // 显示千位分隔符 nudAmount.ReadOnly = false; // 允许手动输入 // 标签提示 Label lblTip = new Label(); lblTip.Text = "金额(元):"; lblTip.Location = new Point(20, 50); lblTip.AutoSize = true; // 查看数值按钮 Button btnView = new Button(); btnView.Text = "确认金额"; btnView.Location = new Point(20, 80); btnView.Click += (s, e) => { // 格式化金额显示(保留2位小数) string amount = nudAmount.Value.ToString("F2"); MessageBox.Show($"确认金额:{amount} 元"); }; this.Controls.Add(nudAmount); this.Controls.Add(lblTip); this.Controls.Add(btnView);说明:创建金额专用的数值调节框,设置范围0-10000元,步长10元,保留2位小数并显示千位分隔符,支持手动输入和箭头调节,点击确认按钮后格式化显示金额,适用于订单金额、支付金额等数值输入场景。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 数值范围精准:根据业务场景设置Minimum/Maximum(如年龄0-120、金额0-10000),避免无效数值输入;- 步长适配:Increment设置需符合数值量级(如金额步长1/10元,数量步长1,百分比步长0.5);- 小数位数:金额、百分比等场景设置DecimalPlaces=2,整数场景保持默认0;3. 注意事项:- 类型转换:Value属性为decimal类型,需转换为int/float时注意类型兼容(如(int)nudAmount.Value);- 手动输入校验:允许手动输入时,控件会自动校验数值范围(超出范围时自动修正为Min/Max);- 千位分隔符:ThousandsSeparator=true仅影响显示,不影响Value值的实际类型;- 十六进制显示:Hexadecimal=true时,数值以十六进制显示,适用于编程、硬件相关场景;- 事件:常用ValueChanged(数值变化时)事件。 |
| NumericUpDown(数字调节控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、NumericUpDown特有核心属性:1. Value、Minimum、Maximum、Increment、DecimalPlaces、ThousandsSeparator、Hexadecimal、ReadOnly | 1. Value:decimal类型,当前数值,默认0;2. Minimum/Maximum:decimal类型,可调节的最小/最大值,限制数值范围;3. Increment:decimal类型,每次点击上下按钮时的增减步长,默认1;4. DecimalPlaces:int类型,保留的小数位数,默认0(整数);5. ThousandsSeparator:bool类型,是否显示千位分隔符,true(显示)、false(不显示,默认);6. Hexadecimal:bool类型,是否以十六进制显示,true(十六进制)、false(十进制,默认);7. ReadOnly:bool类型,是否只读(仅可通过按钮调节,不可手动输入),true(只读)、false(可输入,默认)。 | 1. 基础整数调节:作用:精确调节数值,适用于数量、年龄、评分等数值输入场景;示例:NumericUpDown nudQuantity = new NumericUpDown(); nudQuantity.Location = new Point(20, 20); nudQuantity.Size = new Size(100, 25); nudQuantity.Minimum = 1; nudQuantity.Maximum = 100; nudQuantity.Value = 10; nudQuantity.Increment = 5; this.Controls.Add(nudQuantity);说明:创建数量调节控件,范围1-100,默认值10,每次点击上下按钮增减5,适用于商品数量选择。2. 小数调节(DecimalPlaces):示例:NumericUpDown nudPrice = new NumericUpDown(); nudPrice.Location = new Point(20, 50); nudPrice.Size = new Size(120, 25); nudPrice.Minimum = 0.01m; nudPrice.Maximum = 999.99m; nudPrice.DecimalPlaces = 2; nudPrice.Increment = 0.01m; nudPrice.ThousandsSeparator = true; this.Controls.Add(nudPrice);说明:保留2位小数,适用于价格调节,显示千位分隔符,每次增减0.01,符合金额输入习惯。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 数值范围:必须设置Minimum/Maximum,避免用户调节到无效数值;- 步长匹配:根据场景设置Increment(如数量用5、价格用0.01);- 小数场景:金额、评分等需要小数的场景,设置DecimalPlaces;3. 注意事项:- 类型转换:Value是decimal类型,使用时需转换为int、double等类型(如(int)nudQuantity.Value);- 输入限制:默认允许手动输入,若需严格限制数值范围,可设置ReadOnly=true,仅允许通过按钮调节;- 十六进制:Hexadecimal=true时,Value以十六进制显示,适用于硬件配置等场景;- 事件:常用ValueChanged事件监听数值变化。 |
| OpenFileDialog(打开文件对话框控件) | 一、基础公共属性(继承自CommonDialog):1. Name、Tag、Title、Filter、FilterIndex、InitialDirectory、Multiselect、FileName、FileNames、CheckFileExists、CheckPathExists | 1. Title:string类型,对话框标题,默认“打开”;2. Filter:string类型,文件筛选器(如“文本文件|*.txt|所有文件|*.*”);3. FilterIndex:int类型,默认选中的筛选器索引(从1开始),默认1;4. InitialDirectory:string类型,对话框初始目录,默认当前应用程序目录;5. Multiselect:bool类型,是否允许选择多个文件,true(允许)、false(禁止,默认);6. FileName:string类型,选中的单个文件名(含路径);7. FileNames:string[]类型,选中的多个文件名(含路径,Multiselect=true时有效);8. CheckFileExists:bool类型,是否检查文件是否存在,true(检查,默认)、false(不检查)。 | 1. 选择文本文件并读取内容:作用:让用户选择并打开文件,适用于文件导入、文本读取、图片打开等场景;示例:// 创建打开文件对话框 OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "选择文本文件"; ofd.Filter = "文本文件|*.txt|Word文档|*.doc;*.docx|所有文件|*.*"; ofd.FilterIndex = 1; ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); ofd.Multiselect = false; ofd.CheckFileExists = true; ofd.CheckPathExists = true; // 创建按钮触发对话框 Button btnOpen = new Button(); btnOpen.Text = "打开文件"; btnOpen.Location = new Point(20, 20); btnOpen.Size = new Size(100, 30); btnOpen.Click += (s, e) => { if (ofd.ShowDialog() == DialogResult.OK) { // 读取选中文件内容并显示 string content = File.ReadAllText(ofd.FileName, Encoding.UTF8); RichTextBox rtb = new RichTextBox(); rtb.Location = new Point(20, 60); rtb.Size = new Size(350, 200); rtb.Text = content; rtb.ReadOnly = true; this.Controls.Add(rtb); } }; this.Controls.Add(btnOpen);说明:创建打开文件对话框,筛选文本文件、Word文档,初始目录为“我的文档”,禁止多选,点击按钮打开对话框,选择文件后读取内容并在富文本框中显示。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 筛选器设置:Filter格式为“显示名称|文件扩展名”,多个扩展名用分号分隔,多个筛选项用竖线分隔;- 初始目录:建议设置为常用目录(如我的文档、桌面),提升用户体验;- 校验开启:务必开启CheckFileExists和CheckPathExists,避免选择无效文件/路径;3. 注意事项:- 对话框阻塞:ShowDialog()方法是阻塞式的,调用期间会暂停当前线程,直到用户关闭对话框;- 编码处理:读取文本文件时需指定正确的编码(如UTF8、GB2312),避免乱码;- 多文件选择:Multiselect=true时,通过FileNames属性获取所有选中文件路径;- 资源释放:使用完成后需调用Dispose()方法释放资源;- 与SaveFileDialog区别:OpenFileDialog用于选择打开已有文件,SaveFileDialog用于选择保存文件的路径和名称。 |
| Panel(面板控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、Panel特有核心属性:1. AutoScroll、AutoScrollMinSize、BorderStyle、AutoScrollPosition、Dock | 1. AutoScroll:bool类型,是否自动显示滚动条(内容超出面板大小时),true(自动显示)、false(不显示,默认);2. AutoScrollMinSize:Size类型,滚动区域的最小尺寸(AutoScroll=true时生效);3. BorderStyle:BorderStyle枚举,边框样式,None(无边框,默认)、FixedSingle(单边框)、Fixed3D(3D边框);4. AutoScrollPosition:Point类型,当前滚动位置(只读);5. Dock:DockStyle枚举,停靠方式,如Top、Bottom、Left、Right、Fill(填充父容器),默认None。 | 1. 带滚动条的面板:作用:作为控件容器,支持滚动,适用于大量控件或动态加载控件的场景;示例:Panel pnlContainer = new Panel(); pnlContainer.Location = new Point(20, 20); pnlContainer.Size = new Size(300, 200); pnlContainer.AutoScroll = true; pnlContainer.AutoScrollMinSize = new Size(280, 300); // 滚动区域最小高度300 pnlContainer.BorderStyle = BorderStyle.FixedSingle; this.Controls.Add(pnlContainer); // 动态添加多个控件 for (int i = 0; i < 10; i++) { CheckBox chk = new CheckBox(); chk.Text = "选项" + (i + 1); chk.Location = new Point(20, 30 * i); chk.AutoSize = true; pnlContainer.Controls.Add(chk); }说明:创建带单边框的面板,启用自动滚动,滚动区域最小高度300,动态添加10个复选框,超出面板高度时显示滚动条。2. 停靠填充面板:示例:Panel pnlMain = new Panel(); pnlMain.Dock = DockStyle.Fill; pnlMain.BackColor = Color.White; this.Controls.Add(pnlMain); // 向停靠面板添加控件 Button btnSave = new Button(); btnSave.Text = "保存"; btnSave.Location = new Point(20, 20); btnSave.Size = new Size(80, 30); pnlMain.Controls.Add(btnSave);说明:面板停靠填充整个窗体,作为主容器承载其他控件,便于整体布局管理。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 滚动场景:控件数量多或动态加载控件时,设置AutoScroll=true,避免控件溢出;- 布局容器:作为窗体的主容器,使用Dock=Fill承载所有控件,便于整体样式控制(如背景色);- 边框选择:需要区分容器范围时,设置BorderStyle=FixedSingle;3. 注意事项:- 滚动位置:AutoScrollPosition是负数坐标(如X=-10,Y=-20表示向右滚动10,向下滚动20),获取时需注意;- 子控件定位:子控件Location相对Panel定位,AutoScroll=true时,超出Panel范围的子控件可通过滚动查看;- 与ScrollViewer区别:Panel的AutoScroll功能简单,仅支持垂直/水平滚动;WinForm无原生ScrollViewer,复杂滚动场景需用Panel+AutoScroll;- 性能优化:动态添加大量子控件时,建议先暂停Panel的布局更新(SuspendLayout),添加完成后恢复(ResumeLayout),提升加载速度。 |
| PictureBox(图片框控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Cursor、Tag二、PictureBox特有核心属性:1. Image、ImageLocation、SizeMode、BorderStyle、InitialImage、WaitOnLoad、SizeMode | 1. Image:Image类型,显示的图片对象,可通过本地文件、资源、流加载;2. ImageLocation:string类型,图片文件路径(本地或网络),设置后自动加载图片;3. SizeMode:PictureBoxSizeMode枚举,图片缩放模式,如Normal(原尺寸,默认)、StretchImage(拉伸填充)、AutoSize(控件适应图片)、CenterImage(居中)、Zoom(等比缩放);4. BorderStyle:边框样式,同Label控件;5. InitialImage:加载主图片时显示的过渡图片(如加载中提示);6. WaitOnLoad:bool类型,是否同步加载图片(阻塞UI),true(同步)、false(异步,默认)。 | 1. 基础图片显示(Image + SizeMode):作用:展示图片(如头像、产品图、广告图),支持多种缩放模式,是WinForm核心图片展示控件;示例:PictureBox pbAvatar = new PictureBox(); pbAvatar.Location = new Point(20, 20); pbAvatar.Size = new Size(100, 100); pbAvatar.SizeMode = PictureBoxSizeMode.Zoom; // 等比缩放 pbAvatar.BorderStyle = BorderStyle.FixedSingle; // 加边框 // 加载本地图片 pbAvatar.Image = Image.FromFile("avatar.jpg"); this.Controls.Add(pbAvatar);说明:创建100x100的头像框,等比缩放图片避免变形,添加单边框,加载本地头像图片。2. 异步加载网络图片(ImageLocation + WaitOnLoad=false):示例:PictureBox pbAd = new PictureBox(); pbAd.Location = new Point(20, 130); pbAd.Size = new Size(300, 150); pbAd.SizeMode = PictureBoxSizeMode.StretchImage; pbAd.InitialImage = Image.FromFile("loading.png"); // 加载中过渡图 pbAd.ImageLocation = "https://example.com/ad.jpg"; // 网络图片路径 this.Controls.Add(pbAd);说明:异步加载网络广告图,加载过程中显示过渡图,加载完成后显示广告图,避免阻塞UI。3. 控件适应图片(SizeMode=AutoSize):示例:PictureBox pbIcon = new PictureBox(); pbIcon.Location = new Point(20, 300); pbIcon.SizeMode = PictureBoxSizeMode.AutoSize; pbIcon.Image = Properties.Resources.icon; // 加载项目资源图片 this.Controls.Add(pbIcon);说明:控件自动适应图片大小,无需手动设置Size,适用于显示图标等固定尺寸图片。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 图片加载方式:本地小图片用Image.FromFile;项目内置图片用资源文件(Properties.Resources);网络图片用ImageLocation;- SizeMode选择:头像、产品图用Zoom(等比缩放);背景图用StretchImage(拉伸填充);图标用AutoSize;- 异步加载:加载大图片或网络图片时,务必保持WaitOnLoad=false(默认),避免UI卡死;3. 注意事项:- 资源释放:通过Image.FromFile加载的图片,需在控件销毁时手动释放资源(Image.Dispose()),避免文件锁定;- 网络图片:ImageLocation加载网络图片时,需确保网络通畅,建议添加异常处理;- 图片格式支持:支持BMP、JPG、PNG、GIF等常见格式,GIF仅显示第一帧(不支持动画);- 交互扩展:可通过Click事件实现图片预览、切换等功能;通过MouseMove事件实现图片拖拽。 |
| ProgressBar(进度条控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Cursor、Tag二、ProgressBar特有核心属性:1. Minimum、Maximum、Value、Step、Style、MarqueeAnimationSpeed | 1. Minimum/Maximum:int类型,进度条的最小/最大值,默认0/100;2. Value:int类型,当前进度值,默认0,取值范围在Minimum和Maximum之间;3. Step:int类型,进度步长,调用PerformStep()方法时每次增加的进度值,默认10;4. Style:ProgressBarStyle枚举,进度条样式,Blocks(块级,默认)、Continuous(连续)、Marquee(滚动动画,无具体进度);5. MarqueeAnimationSpeed:int类型,Marquee样式下的滚动速度(毫秒),默认30。 | 1. 确定进度显示(Style=Continuous):作用:展示可量化的进度(如文件下载、任务执行),适用于已知进度的场景;示例:ProgressBar pbDownload = new ProgressBar(); pbDownload.Location = new Point(20, 20); pbDownload.Size = new Size(300, 20); pbDownload.Minimum = 0; pbDownload.Maximum = 100; pbDownload.Style = ProgressBarStyle.Continuous; this.Controls.Add(pbDownload); // 模拟进度更新(实际场景在异步线程中执行) for (int i = 0; i <= 100; i++) { pbDownload.Value = i; System.Threading.Thread.Sleep(50); // 模拟耗时操作 Application.DoEvents(); // 刷新UI(建议用异步代替) }说明:创建连续样式进度条,范围0-100,模拟下载进度更新,直观展示进度变化。2. 不确定进度显示(Style=Marquee):示例:ProgressBar pbLoading = new ProgressBar(); pbLoading.Location = new Point(20, 50); pbLoading.Size = new Size(300, 20); pbLoading.Style = ProgressBarStyle.Marquee; pbLoading.MarqueeAnimationSpeed = 20; // 加快滚动速度 this.Controls.Add(pbLoading);说明:无具体进度值,显示滚动动画,适用于初始化、数据请求等无法量化进度的场景。3. 步长更新(Step + PerformStep):示例:ProgressBar pbTask = new ProgressBar(); pbTask.Location = new Point(20, 80); pbTask.Size = new Size(300, 20); pbTask.Minimum = 0; pbTask.Maximum = 5; pbTask.Step = 1; this.Controls.Add(pbTask); // 每完成一个子任务更新一次进度 for (int i = 0; i < 5; i++) { CompleteSubTask(i); // 完成子任务 pbTask.PerformStep(); // 进度增加Step(1) System.Threading.Thread.Sleep(1000); Application.DoEvents(); }说明:进度条最大值5,步长1,每完成一个子任务调用PerformStep()更新进度,适用于多步骤任务的进度展示。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 场景匹配:可量化进度(下载、安装)用Blocks/Continuous样式;未知进度(加载、请求)用Marquee样式;- 进度范围:根据任务类型设置Minimum/Maximum,如多步骤任务可设为步骤数,文件下载设为文件大小;- 异步更新:进度更新逻辑务必在异步线程中执行(如BackgroundWorker、Task),避免阻塞UI;3. 注意事项:- Value约束:Value自动限制在Minimum和Maximum之间,超出部分自动修正;- Marquee样式:该样式下Minimum/Maximum/Value属性无效,仅控制滚动动画;- 性能优化:频繁更新Value时(如每秒多次),建议控制更新频率(如每100ms更新一次);- 样式扩展:默认样式较简单,可通过重绘(OnPaint事件)自定义进度条外观(如渐变颜色、进度文本);- 与BackgroundWorker配合:常用BackgroundWorker的ProgressChanged事件更新进度条,DoWork事件执行后台任务,避免跨线程操作UI。 |
| RadioButton(单选按钮控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、RadioButton特有核心属性:1. Text、Checked、AutoCheck、Appearance、FlatStyle、GroupName | 1. Text:string类型,单选按钮右侧文本,默认空字符串;2. Checked:bool类型,是否选中,true(选中)、false(未选中,默认);3. AutoCheck:bool类型,点击时自动切换选中状态并取消同组其他按钮,true(默认)、false(手动控制);4. Appearance/FlatStyle:同CheckBox控件;5. GroupName:string类型,分组名称,同一GroupName的RadioButton互斥(仅一个可选中),默认空字符串(无分组)。 | 1. 基础单选分组(GroupName):作用:实现互斥选项选择(如性别、登录方式),同一组内仅一个可选中;示例:// 性别分组 RadioButton rbMale = new RadioButton(); rbMale.Text = "男"; rbMale.Location = new Point(20, 20); rbMale.AutoSize = true; rbMale.GroupName = "Gender"; this.Controls.Add(rbMale); RadioButton rbFemale = new RadioButton(); rbFemale.Text = "女"; rbFemale.Location = new Point(80, 20); rbFemale.AutoSize = true; rbFemale.GroupName = "Gender"; this.Controls.Add(rbFemale);说明:两个单选按钮同属“Gender”组,互斥选中,用户只能选择其一。2. 按钮样式单选(Appearance=Button):示例:// 登录方式分组 RadioButton rbPwd = new RadioButton(); rbPwd.Text = "密码登录"; rbPwd.Location = new Point(20, 50); rbPwd.Size = new Size(100, 30); rbPwd.Appearance = Appearance.Button; rbPwd.FlatStyle = FlatStyle.Flat; rbPwd.GroupName = "LoginType"; rbPwd.Checked = true; // 默认选中 this.Controls.Add(rbPwd); RadioButton rbCode = new RadioButton(); rbCode.Text = "验证码登录"; rbCode.Location = new Point(130, 50); rbCode.Size = new Size(120, 30); rbCode.Appearance = Appearance.Button; rbCode.FlatStyle = FlatStyle.Flat; rbCode.GroupName = "LoginType"; this.Controls.Add(rbCode);说明:单选按钮显示为按钮样式,默认选中“密码登录”,点击切换时按钮高亮,直观展示当前选择。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 必须分组:实现互斥功能必须设置GroupName,同一组内GroupName字符串需完全一致;- 默认选中:每组建议设置一个默认选中项(Checked=true),提升用户体验;- 样式选择:普通单选用默认样式,切换类功能用按钮样式;3. 注意事项:- 分组范围:GroupName不受容器限制,整个窗体中GroupName相同即互斥;不同容器需区分GroupName;- 无法取消:选中后无法通过再次点击取消,需选中同组其他按钮或通过代码设置Checked=false;- AutoCheck=false:点击不自动切换状态,需手动管理同组按钮的Checked属性;- 事件:状态变化用CheckedChanged事件,触发时机为选中状态改变后。 |
| RadioButtonList(单选按钮列表控件) | 一、基础公共属性(继承自ListControl):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag、DataSource、DisplayMember、ValueMember二、RadioButtonList特有核心属性:1. Items、SelectedItem、SelectedIndex、RepeatLayout、RepeatDirection、RepeatColumns、TextAlign | 1. Items:ListItemCollection类型,单选按钮选项集合;2. SelectedItem:object类型,当前选中的项;3. SelectedIndex:int类型,当前选中项的索引,默认-1(无选中);4. RepeatLayout:RepeatLayout枚举,布局方式,Table(表格布局,默认)、Flow(流布局);5. RepeatDirection:RepeatDirection枚举,排列方向,Horizontal(水平)、Vertical(垂直,默认);6. RepeatColumns:int类型,表格布局时的列数,默认1;7. TextAlign:TextAlign枚举,文本对齐方式,Left(左对齐,默认)、Right。 | 1. 单选项选择场景:作用:展示互斥的单选选项,适用于性别选择、类型筛选、等级设置等场景;示例:// 创建RadioButtonList RadioButtonList rblGender = new RadioButtonList(); rblGender.Location = new Point(20, 20); rblGender.Size = new Size(200, 60); rblGender.RepeatLayout = RepeatLayout.Table; rblGender.RepeatDirection = RepeatDirection.Horizontal; rblGender.RepeatColumns = 2; rblGender.TextAlign = TextAlign.Left; // 添加选项(可设置文本和值) rblGender.Items.Add(new ListItem("男", "Male")); rblGender.Items.Add(new ListItem("女", "Female")); rblGender.Items.Add(new ListItem("其他", "Other")); // 默认选中第一项 rblGender.SelectedIndex = 0; // 查看选中项按钮 Button btnView = new Button(); btnView.Text = "查看选择"; btnView.Location = new Point(20, 90); btnView.Click += (s, e) => { if (rblGender.SelectedIndex != -1) { ListItem selected = (ListItem)rblGender.SelectedItem; MessageBox.Show($"选中性别:{selected.Text}(值:{selected.Value})"); } else { MessageBox.Show("请选择性别!"); } }; this.Controls.Add(rblGender); this.Controls.Add(btnView);说明:创建单选按钮列表,水平排列2列,添加性别选项并默认选中“男”,点击查看按钮后展示选中项的文本和对应值,适用于表单中的性别选择场景。 | 1. 兼容性:支持.NET Framework 2.0+、.NET Core 3.0+、.NET 5+;2. 使用规范:- 布局适配:选项较少时用Horizontal水平排列节省空间,选项较多时用Vertical垂直排列;- 数据绑定:优先通过DataSource绑定数据源(如List<性别枚举>),设置DisplayMember(显示文本)和ValueMember(对应值);- 默认选中:根据业务需求设置默认选中项(SelectedIndex或SelectedValue),提升用户体验;3. 注意事项:- 互斥特性:单选按钮列表内选项天然互斥,无需额外设置,用户只能选中一项;- 空选中处理:默认SelectedIndex=-1(无选中),需在提交前检查是否有选中项;- 样式定制:可通过CssClass(WinForm中结合控件渲染)或自定义绘制实现个性化样式;- 事件:常用SelectedIndexChanged(选中项变化时)事件。 |
| RichTextBox(富文本框控件) | 一、基础公共属性(继承自TextBoxBase):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag、Text、Multiline、ScrollBars、ReadOnly二、RichTextBox特有核心属性:1. Rtf、SelectedRtf、SelectionFont、SelectionColor、SelectionBackColor、BulletIndent、LineSpacing、DetectUrls | 1. Rtf:string类型,RTF格式文本(富文本格式),包含文本样式信息;2. SelectedRtf:string类型,选中区域的RTF格式文本;3. SelectionFont:Font类型,选中区域的字体样式(如字体、大小、加粗);4. SelectionColor:Color类型,选中区域的文本颜色;5. SelectionBackColor:Color类型,选中区域的背景颜色;6. BulletIndent:int类型,项目符号缩进距离,默认0;7. LineSpacing:int类型,行间距,默认0(使用字体默认行间距);8. DetectUrls:bool类型,是否自动检测URL并设为超链接,true(检测,默认)、false(不检测)。 | 1. 基础富文本编辑:作用:支持文本样式设置(字体、颜色、加粗等),适用于文档编辑、富文本展示场景;示例:RichTextBox rtbDoc = new RichTextBox(); rtbDoc.Location = new Point(20, 20); rtbDoc.Size = new Size(350, 200); rtbDoc.Multiline = true; rtbDoc.ScrollBars = RichTextBoxScrollBars.Vertical; rtbDoc.DetectUrls = true; // 设置默认文本和样式 rtbDoc.Text = "RichTextBox富文本编辑示例\n支持字体样式、颜色设置,自动检测URL:https://example.com"; // 为第一行文本设置样式(加粗、红色、大号字体) rtbDoc.Select(0, 18); // 选中前18个字符(第一行) rtbDoc.SelectionFont = new Font("微软雅黑", 12, FontStyle.Bold); rtbDoc.SelectionColor = Color.Red; // 为URL设置下划线 rtbDoc.Select(rtbDoc.Text.IndexOf("https://example.com"), "https://example.com".Length); rtbDoc.SelectionFont = new Font(rtbDoc.Font, FontStyle.Underline); rtbDoc.SelectionColor = Color.Blue; this.Controls.Add(rtbDoc);说明:创建富文本框,支持垂直滚动,自动检测URL,为第一行文本设置加粗红色样式,为URL设置蓝色下划线,实现富文本编辑效果。2. 插入项目符号:示例:// 向富文本框插入项目符号列表 rtbDoc.Clear(); rtbDoc.BulletIndent = 20; rtbDoc.Bullets = true; rtbDoc.AppendText("项目1\n"); rtbDoc.AppendText("项目2\n"); rtbDoc.AppendText("项目3\n"); rtbDoc.Bullets = false; // 关闭项目符号 rtbDoc.AppendText("普通文本内容");说明:开启项目符号功能,设置缩进距离,插入带项目符号的列表,之后关闭项目符号插入普通文本。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 样式设置:设置文本样式前需用Select方法选中目标文本区域,无选中时设置的是后续输入文本的样式;- 格式保存:富文本内容建议用Rtf属性保存(保留样式),而非Text属性(仅保留纯文本);- URL检测:DetectUrls=true时,URL自动显示为超链接,可通过LinkClicked事件处理点击;3. 注意事项:- 字体资源:自定义字体需确保目标机器存在该字体,否则会显示默认字体;- 性能优化:大量富文本(万字符以上)编辑时,建议暂停布局更新(SuspendLayout),编辑完成后恢复(ResumeLayout);- 换行处理:Multiline=true时,Enter键插入硬换行(\n),可通过LineSpacing调整行间距;- 与TextBox区别:RichTextBox支持富文本样式(字体、颜色、项目符号等),TextBox仅支持纯文本;RichTextBox功能更强大,但性能略低。 |
| SaveFileDialog(保存文件对话框控件) | 一、基础公共属性(继承自CommonDialog):1. Name、Tag、Title、Filter、FilterIndex、InitialDirectory、FileName、CheckPathExists、OverwritePrompt、CreatePrompt | 1. OverwritePrompt:bool类型,当文件已存在时是否提示覆盖,true(提示,默认)、false(不提示);2. CreatePrompt:bool类型,当路径不存在时是否提示创建,true(提示)、false(不提示,默认);3. 其他属性(Title、Filter、FileName等)含义同OpenFileDialog控件。 | 1. 保存富文本框内容到文件:作用:让用户选择保存文件的路径和名称,适用于文件导出、文本保存、报表生成等场景;示例:// 创建富文本框(用于输入内容) RichTextBox rtbContent = new RichTextBox(); rtbContent.Location = new Point(20, 20); rtbContent.Size = new Size(350, 200); rtbContent.Text = "请输入要保存的内容..."; this.Controls.Add(rtbContent); // 创建保存文件对话框 SaveFileDialog sfd = new SaveFileDialog(); sfd.Title = "保存文本文件"; sfd.Filter = "文本文件|*.txt|富文本文件|*.rtf|所有文件|*.*"; sfd.FilterIndex = 1; sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); sfd.FileName = "未命名文件.txt"; // 默认文件名 sfd.OverwritePrompt = true; sfd.CheckPathExists = true; // 保存按钮 Button btnSave = new Button(); btnSave.Text = "保存文件"; btnSave.Location = new Point(20, 230); btnSave.Size = new Size(100, 30); btnSave.Click += (s, e) => { if (sfd.ShowDialog() == DialogResult.OK) { // 根据选择的文件类型保存内容 if (sfd.FilterIndex == 1) // 文本文件 { File.WriteAllText(sfd.FileName, rtbContent.Text, Encoding.UTF8); } else if (sfd.FilterIndex == 2) // 富文本文件 { rtbContent.SaveFile(sfd.FileName, RichTextBoxStreamType.RichText); } MessageBox.Show("保存成功!"); } }; this.Controls.Add(btnSave);说明:创建保存文件对话框,支持保存文本文件和富文本文件,默认文件名为“未命名文件.txt”,存在同名文件时提示覆盖,点击保存按钮将富文本框内容保存到指定文件。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 默认文件名:建议设置合理的默认文件名(如“报表_20250115.txt”),减少用户输入;- 筛选器匹配:保存时需根据用户选择的筛选器类型(FilterIndex)处理内容格式(如文本/富文本);- 覆盖提示:务必开启OverwritePrompt,避免误覆盖用户已有文件;3. 注意事项:- 路径创建:CreatePrompt=true时,路径不存在会提示用户创建,默认不提示(需手动确保路径存在);- 编码设置:保存文本文件时指定编码(如UTF8),避免不同设备打开时乱码;- 富文本保存:RichTextBox的SaveFile方法可直接保存为RTF格式,无需手动处理样式;- 权限检查:保存到系统目录(如C盘根目录)可能需要管理员权限,建议保存到用户可读写目录(我的文档、桌面)。 |
| SplitContainer(拆分容器控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Cursor、Tag二、SplitContainer特有核心属性:1. Panel1、Panel2、Orientation、SplitterDistance、SplitterWidth、SplitterIncrement、IsSplitterFixed、MinimumSize | 1. Panel1/Panel2:SplitPanel类型,拆分后的两个面板,可直接向面板添加控件;2. Orientation:Orientation枚举,拆分方向,Horizontal(水平,上下拆分)、Vertical(垂直,左右拆分,默认);3. SplitterDistance:int类型,拆分器距离Panel1一侧的距离(宽度/高度),默认50;4. SplitterWidth:int类型,拆分器宽度/高度,默认4;5. SplitterIncrement:int类型,拆分器拖动时的最小增量,默认1;6. IsSplitterFixed:bool类型,是否固定拆分器(不可拖动),true(固定)、false(可拖动,默认);7. MinimumSize:Size类型,两个面板的最小尺寸,默认25x25。 | 1. 垂直拆分容器(左右布局):作用:内置两个面板和拆分器,支持拖动调整尺寸,适用于左侧导航右侧内容、左右文档对比等场景;示例:SplitContainer scLeftRight = new SplitContainer(); scLeftRight.Dock = DockStyle.Fill; scLeftRight.Orientation = Orientation.Vertical; scLeftRight.SplitterDistance = 150; // 左侧面板宽度150 scLeftRight.SplitterWidth = 5; scLeftRight.MinimumSize = new Size(50, 50); // 面板最小尺寸50x50 // 左侧面板添加TreeView导航 TreeView tvNav = new TreeView(); tvNav.Dock = DockStyle.Fill; tvNav.Nodes.AddRange(new TreeNode[] { new TreeNode("首页"), new TreeNode("数据管理"), new TreeNode("系统设置") }); scLeftRight.Panel1.Controls.Add(tvNav); // 右侧面板添加RichTextBox内容区 RichTextBox rtbContent = new RichTextBox(); rtbContent.Dock = DockStyle.Fill; rtbContent.Text = "内容展示区域"; scLeftRight.Panel2.Controls.Add(rtbContent); this.Controls.Add(scLeftRight);说明:创建垂直拆分容器,左侧面板宽度150,添加TreeView导航,右侧面板添加RichTextBox内容区,用户可拖动拆分器调整左右面板宽度,布局清晰且灵活。2. 水平拆分容器(上下布局):示例:SplitContainer scTopBottom = new SplitContainer(); scTopBottom.Dock = DockStyle.Fill; scTopBottom.Orientation = Orientation.Horizontal; scTopBottom.SplitterDistance = 120; // 顶部面板高度120 scTopBottom.IsSplitterFixed = false; // 顶部面板添加DataGridView数据展示 DataGridView dgvData = new DataGridView(); dgvData.Dock = DockStyle.Fill; dgvData.DataSource = GetDataTable(); // 绑定数据源 scTopBottom.Panel1.Controls.Add(dgvData); // 底部面板添加TextBox日志显示 TextBox txtLog = new TextBox(); txtLog.Dock = DockStyle.Fill; txtLog.Multiline = true; txtLog.ScrollBars = ScrollBars.Vertical; txtLog.ReadOnly = true; scTopBottom.Panel2.Controls.Add(txtLog); this.Controls.Add(scTopBottom);说明:水平拆分容器,顶部面板显示数据表格,底部面板显示日志,拆分器可拖动,适用于数据展示与日志监控的布局。 | 1. 兼容性:支持所有WinForm版本(.NET Framework 2.0+、.NET Core 3.0+);2. 使用规范:- 拆分方向:左右布局用Vertical,上下布局用Horizontal;- 初始尺寸:通过SplitterDistance设置Panel1的初始宽度/高度,建议根据界面需求合理设置;- 面板使用:直接向Panel1/Panel2的Controls集合添加控件,无需额外创建Panel;3. 注意事项:- 嵌套使用:支持嵌套SplitContainer实现复杂布局(如先上下拆分,上半部分再左右拆分);- 拆分器固定:需要固定布局时,设置IsSplitterFixed=true,拆分器不可拖动;- 最小尺寸:MinimumSize设置两个面板的最小尺寸,避免拆分后面板过小;也可单独设置Panel1.MinimumSize和Panel2.MinimumSize;- 与Splitter区别:SplitContainer内置面板和拆分器,使用更便捷,支持更多功能(如嵌套、单独设置面板最小尺寸),是Splitter的升级替代控件,建议优先使用;- 事件:常用SplitterMoved事件监听拆分器移动完成后的位置变化。 |
| Splitter(拆分器控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Cursor、Tag二、Splitter特有核心属性:1. Dock、Orientation、SplitterWidth、MinExtra、MinSize | 1. Dock:DockStyle枚举,停靠方式,Left(左侧,默认)、Right、Top、Bottom;2. Orientation:Orientation枚举,拆分方向,Horizontal(水平,默认)、Vertical;3. SplitterWidth:int类型,拆分器宽度/高度,默认3;4. MinExtra:int类型,拆分器移动后,另一侧剩余空间的最小尺寸,默认0;5. MinSize:int类型,拆分器移动后,当前侧控件的最小尺寸,默认25。 | 1. 水平拆分器(上下拆分):作用:分隔两个控件,允许用户拖动调整两个控件的大小,适用于多区域布局(如上下文档查看、日志显示);示例:// 顶部面板 Panel pnlTop = new Panel(); pnlTop.Dock = DockStyle.Top; pnlTop.Size = new Size(0, 150); pnlTop.BackColor = Color.LightBlue; this.Controls.Add(pnlTop); // 水平拆分器 Splitter splitter = new Splitter(); splitter.Dock = DockStyle.Top; splitter.Orientation = Orientation.Horizontal; splitter.SplitterWidth = 5; splitter.MinSize = 50; // 顶部面板最小高度50 splitter.MinExtra = 50; // 底部面板最小高度50 this.Controls.Add(splitter); // 底部面板 Panel pnlBottom = new Panel(); pnlBottom.Dock = DockStyle.Fill; pnlBottom.BackColor = Color.LightGreen; this.Controls.Add(pnlBottom);说明:创建水平拆分器分隔上下两个面板,拆分器宽度5,顶部面板最小高度50,底部面板最小高度50,用户可拖动拆分器调整两个面板的高度。2. 垂直拆分器(左右拆分):示例:// 左侧面板 Panel pnlLeft = new Panel(); pnlLeft.Dock = DockStyle.Left; pnlLeft.Size = new Size(150, 0); pnlLeft.BackColor = Color.LightGray; this.Controls.Add(pnlLeft); // 垂直拆分器 Splitter splitter = new Splitter(); splitter.Dock = DockStyle.Left; splitter.Orientation = Orientation.Vertical; splitter.MinSize = 50; // 左侧面板最小宽度50 this.Controls.Add(splitter); // 右侧面板 Panel pnlRight = new Panel(); pnlRight.Dock = DockStyle.Fill; pnlRight.BackColor = Color.White; this.Controls.Add(pnlRight);说明:垂直拆分器分隔左右两个面板,左侧面板最小宽度50,用户可拖动拆分器调整左右面板的宽度,适用于左侧导航、右侧内容的布局。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 停靠顺序:必须先添加被拆分的控件,再添加Splitter,最后添加另一侧控件(如上下拆分:先上面板→Splitter→下面板);- 方向匹配:水平拆分(上下)设Orientation=Horizontal,垂直拆分(左右)设Orientation=Vertical;- 尺寸限制:务必设置MinSize和MinExtra,避免拆分后某一侧控件过小导致内容溢出;3. 注意事项:- 控件依赖:Splitter必须与Dock属性为Top/Bottom(水平拆分)或Left/Right(垂直拆分)的控件配合使用;- 样式优化:SplitterWidth建议设为3-5,宽度适中便于拖动;可通过BackColor设置拆分器颜色,与界面风格匹配;- 与SplitContainer区别:Splitter是基础拆分控件,需手动配合Panel使用;SplitContainer是容器控件,内置两个面板和拆分器,功能更完善,建议优先使用;- 事件:常用SplitterMoved事件监听拆分器移动完成后的位置变化。 |
| StatusStrip(状态栏控件) | 一、基础公共属性(继承自ToolStrip):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、StatusStrip特有核心属性:1. Items、Dock、RenderMode、SizingGrip、ShowItemToolTips、LayoutStyle | 1. Items:ToolStripItemCollection类型,状态栏项集合(包含ToolStripStatusLabel、ToolStripProgressBar等);2. Dock:DockStyle枚举,停靠方式,Bottom(底部,默认)、Top;3. SizingGrip:bool类型,是否显示大小调整柄(右下角小三角),true(显示,默认)、false(隐藏);4. LayoutStyle:ToolStripLayoutStyle枚举,布局样式,Table(表格布局)、Flow(流布局)、HorizontalStackWithOverflow(水平堆叠,默认);其他属性含义同ToolStrip控件。 | 1. 基础状态栏(底部停靠):作用:显示软件状态信息(如就绪、加载进度、当前用户),适用于主窗体底部状态区;示例:// 创建状态栏 StatusStrip ssMain = new StatusStrip(); ssMain.Dock = DockStyle.Bottom; ssMain.RenderMode = ToolStripRenderMode.Professional; ssMain.SizingGrip = true; // 添加状态标签(就绪信息) ToolStripStatusLabel tsslReady = new ToolStripStatusLabel(); tsslReady.Text = "就绪"; tsslReady.Spring = false; // 不自动填充剩余空间 ssMain.Items.Add(tsslReady); // 添加分隔符 ssMain.Items.Add(new ToolStripSeparator()); // 添加进度条(加载状态) ToolStripProgressBar tspbLoad = new ToolStripProgressBar(); tspbLoad.Size = new Size(100, 16); tspbLoad.Visible = false; // 默认隐藏 ssMain.Items.Add(tspbLoad); // 添加用户信息标签(自动填充剩余空间) ToolStripStatusLabel tsslUser = new ToolStripStatusLabel(); tsslUser.Text = "当前用户:管理员"; tsslUser.Spring = true; tsslUser.TextAlign = ContentAlignment.MiddleRight; ssMain.Items.Add(tsslUser); this.Controls.Add(ssMain);说明:创建底部停靠状态栏,包含就绪信息、隐藏的进度条、当前用户信息,用户信息标签自动填充剩余空间并右对齐,符合标准状态栏布局。 | 1. 兼容性:支持所有WinForm版本(.NET Framework 2.0+、.NET Core 3.0+);2. 使用规范:- 信息分类:状态栏项按功能分类,用分隔符区分(如状态信息、进度、用户信息);- 空间分配:重要信息(如就绪状态)设为固定大小,次要信息(如用户、时间)设为Spring=true自动填充剩余空间;- 进度展示:临时加载状态用ToolStripProgressBar,加载完成后隐藏;3. 注意事项:- 大小调整柄:SizingGrip=true时,用户可拖动调整窗体大小,若窗体固定大小,建议设为false;- 项类型:常用ToolStripStatusLabel显示文本,ToolStripProgressBar显示进度,也可添加ToolStripDropDownButton提供更多操作;- 动态更新:通过修改ToolStripStatusLabel的Text属性动态更新状态信息(如“正在加载文件...”);- 样式统一:建议与MenuStrip、ToolStrip使用相同的RenderMode,保持界面风格统一。 |
| TabControl(选项卡控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、TabControl特有核心属性:1. TabPages、SelectedTab、SelectedIndex、Alignment、Appearance、Multiline、DrawMode、ItemSize | 1. TabPages:TabPageCollection类型,选项卡页面集合,存储多个TabPage;2. SelectedTab:TabPage类型,当前选中的选项卡页面;3. SelectedIndex:int类型,当前选中选项卡的索引,-1(无选中,默认)、0(第一个页面);4. Alignment:TabAlignment枚举,选项卡标题栏位置,Top(顶部,默认)、Bottom(底部)、Left(左侧)、Right(右侧);5. Appearance:TabAppearance枚举,选项卡样式,Normal(默认)、Buttons(按钮样式)、FlatButtons(扁平按钮样式);6. Multiline:bool类型,是否支持多行列标题,true(支持)、false(单行,默认)。 | 1. 基础选项卡(多页面):作用:在同一区域切换显示不同内容,节省界面空间,适用于多模块展示(如基本信息、高级设置);示例:// 创建选项卡控件 TabControl tabControl = new TabControl(); tabControl.Location = new Point(20, 20); tabControl.Size = new Size(350, 250); this.Controls.Add(tabControl); // 创建第一个选项卡页面(基本信息) TabPage tabBasic = new TabPage(); tabBasic.Text = "基本信息"; tabControl.TabPages.Add(tabBasic); // 向基本信息页面添加控件 Label lblName = new Label(); lblName.Text = "姓名:"; lblName.Location = new Point(20, 20); lblName.AutoSize = true; tabBasic.Controls.Add(lblName); // 创建第二个选项卡页面(高级设置) TabPage tabAdvance = new TabPage(); tabAdvance.Text = "高级设置"; tabControl.TabPages.Add(tabAdvance); tabControl.SelectedIndex = 0; // 默认选中第一个页面说明:创建包含“基本信息”和“高级设置”两个页面的选项卡,默认选中第一个页面,切换选项卡时显示对应页面内容。2. 左侧选项卡(Alignment=Left):示例:TabControl tabLeft = new TabControl(); tabLeft.Location = new Point(20, 20); tabLeft.Size = new Size(350, 250); tabLeft.Alignment = TabAlignment.Left; tabLeft.ItemSize = new Size(60, 100); // 标题栏宽60,高100 tabLeft.DrawMode = TabDrawMode.OwnerDrawFixed; tabLeft.DrawItem += TabLeft_DrawItem; this.Controls.Add(tabLeft); // 添加页面(标题竖排) TabPage tab1 = new TabPage("首页"); TabPage tab2 = new TabPage("数据"); tabLeft.TabPages.AddRange(new TabPage[] { tab1, tab2 });说明:选项卡标题栏在左侧,设置标题栏尺寸,通过DrawItem事件可实现标题竖排显示,适用于纵向空间充足的场景。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 页面划分:每个TabPage对应一个功能模块,内容聚焦单一功能,避免页面过于复杂;- 标题位置:默认Top符合用户习惯,大量页面或标题较长时可用Left/Right,需调整ItemSize;- 样式选择:普通场景用Normal样式,按钮式切换用Buttons/FlatButtons样式;3. 注意事项:- 页面添加:必须通过TabPages.Add添加TabPage,子控件需添加到对应TabPage的Controls集合;- 默认选中:建议设置SelectedIndex=0,默认选中第一个页面,提升用户体验;- 自定义绘制:DrawMode=OwnerDrawFixed时,可通过DrawItem事件自定义选项卡标题的外观(如颜色、字体、竖排);- 事件:常用SelectedIndexChanged事件监听选项卡切换,TabPage的Enter事件监听页面进入。 |
| TableLayoutPanel(表格布局面板控件) | 一、基础公共属性(继承自Panel):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag、BorderStyle、AutoScroll二、TableLayoutPanel特有核心属性:1. ColumnCount、RowCount、ColumnStyles、RowStyles、GrowStyle、CellBorderStyle | 1. ColumnCount/RowCount:int类型,表格的列数/行数,默认1;2. ColumnStyles/RowStyles:TableLayoutStyleCollection类型,列/行的样式集合(控制列宽/行高的调整方式);3. GrowStyle:TableLayoutPanelGrowStyle枚举,表格增长方式(AddRows:增加行,默认;AddColumns:增加列;FixedSize:固定大小);4. CellBorderStyle:TableLayoutPanelCellBorderStyle枚举,单元格边框样式(None:无边框,默认;Single:单边框;Inset:内嵌边框等);5. 列/行样式类型:Absolute(固定尺寸)、AutoSize(自动适应内容)、Percent(百分比占比)。 | 1. 表单网格布局场景:作用:按表格网格排列控件,适用于固定行列的表单布局、数据展示表格、控件矩阵等场景;示例:// 创建TableLayoutPanel(3行2列) TableLayoutPanel tlpForm = new TableLayoutPanel(); tlpForm.Location = new Point(20, 20); tlpForm.Size = new Size(350, 180); tlpForm.ColumnCount = 2; tlpForm.RowCount = 3; tlpForm.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; // 显示单元格边框 tlpForm.GrowStyle = TableLayoutPanelGrowStyle.FixedSize; // 设置列样式(第一列固定宽度,第二列百分比占比) tlpForm.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 80)); // 第一列宽80像素 tlpForm.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100)); // 第二列占剩余宽度100% // 设置行样式(所有行自动适应内容) tlpForm.RowStyles.Add(new RowStyle(SizeType.AutoSize)); tlpForm.RowStyles.Add(new RowStyle(SizeType.AutoSize)); tlpForm.RowStyles.Add(new RowStyle(SizeType.AutoSize)); // 添加控件到表格(按行/列索引添加) // 第一行(姓名) Label lblName = new Label() { Text = "姓名:", Dock = DockStyle.Fill, TextAlign = ContentAlignment.MiddleRight }; TextBox txtName = new TextBox() { Dock = DockStyle.Fill }; tlpForm.Controls.Add(lblName, 0, 0); // 第0列第0行 tlpForm.Controls.Add(txtName, 1, 0); // 第1列第0行 // 第二行(年龄) Label lblAge = new Label() { Text = "年龄:", Dock = DockStyle.Fill, TextAlign = ContentAlignment.MiddleRight }; NumericUpDown nudAge = new NumericUpDown() { Dock = DockStyle.Fill, Minimum = 0, Maximum = 120 }; tlpForm.Controls.Add(lblAge, 0, 1); // 第0列第1行 tlpForm.Controls.Add(nudAge, 1, 1); // 第1列第1行 // 第三行(按钮,跨两列) Button btnSubmit = new Button() { Text = "提交", Dock = DockStyle.Fill }; tlpForm.Controls.Add(btnSubmit, 0, 2); // 第0列第2行 tlpForm.SetColumnSpan(btnSubmit, 2); // 跨2列 this.Controls.Add(tlpForm);说明:创建3行2列的表格布局面板,设置第一列固定宽度80像素,第二列占剩余宽度,所有行自动适应内容;添加姓名、年龄相关控件,提交按钮跨两列显示,单元格显示单边框,实现规范的表单网格布局,提升表单的整洁度和可读性。 | 1. 兼容性:支持.NET Framework 2.0+、.NET Core 3.0+、.NET 5+;2. 使用规范:- 行列规划:先明确表单的行列数量,避免后续频繁调整;- 列宽/行高设置:合理组合Absolute(固定)、AutoSize(自适应)、Percent(百分比)三种样式(如标签列固定宽度,输入框列百分比占比);- 跨列/跨行:通过SetColumnSpan(跨列)、SetRowSpan(跨行)方法实现控件跨行列显示(如提交按钮跨所有列);3. 注意事项:- 控件添加:通过Controls.Add(control, columnIndex, rowIndex)方法指定控件所在的列和行;- 自动增长:GrowStyle=AddRows时,添加的控件超出当前行列数时会自动增加行;AddColumns时自动增加列;FixedSize时超出会抛出异常;- 边框样式:CellBorderStyle设置单元格边框,提升表格的清晰度;- 与FlowLayoutPanel区别:TableLayoutPanel适用于“固定行列”的控件布局(如表单),FlowLayoutPanel适用于“动态数量”的流式布局(如标签云);- 性能优化:大量控件布局时,先SuspendLayout()暂停布局,添加完成后ResumeLayout()恢复布局,减少布局计算次数。 |
| TextBox(文本框控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、TextBox特有核心属性:1. Text、PasswordChar、MaxLength、Multiline、ScrollBars、ReadOnly、AcceptsReturn、AcceptsTab、SelectionStart、SelectionLength、CaretIndex | 1. Text:string类型,文本框内容,支持读写,默认空字符串;2. PasswordChar:char类型,密码掩码字符,如'*'、'●',默认'\0'(不掩码);3. MaxLength:int类型,允许输入的最大字符数,默认32767(无限制);4. Multiline:bool类型,是否支持多行输入,true(多行)、false(单行,默认);5. ScrollBars:ScrollBars枚举,滚动条样式,None(无滚动条,默认)、Horizontal(水平)、Vertical(垂直)、Both(双向);6. ReadOnly:bool类型,是否只读,true(仅可选中复制,默认false)、false(可编辑);7. AcceptsReturn:bool类型,多行模式下是否允许Enter键换行,true(允许)、false(不允许,默认)。 | 1. 单行文本输入(默认):作用:输入简短文本(如用户名、账号),适用于表单基础输入场景;示例:TextBox txtUserName = new TextBox(); txtUserName.Location = new Point(80, 20); txtUserName.Size = new Size(200, 25); txtUserName.MaxLength = 20; txtUserName.HintText = "请输入用户名"; // .NET 5+支持提示文本 this.Controls.Add(txtUserName);说明:创建单行文本框,定位在用户名标签右侧,最大输入20个字符,添加提示文本引导用户输入。2. 密码输入(PasswordChar):示例:TextBox txtPassword = new TextBox(); txtPassword.Location = new Point(80, 50); txtPassword.Size = new Size(200, 25); txtPassword.PasswordChar = '*'; txtPassword.MaxLength = 16; this.Controls.Add(txtPassword);说明:设置PasswordChar为'*',输入内容以掩码形式显示,保护密码安全,限制最大密码长度16位。3. 多行文本输入(Multiline + ScrollBars):示例:TextBox txtRemark = new TextBox(); txtRemark.Location = new Point(20, 80); txtRemark.Size = new Size(260, 100); txtRemark.Multiline = true; txtRemark.ScrollBars = ScrollBars.Vertical; txtRemark.AcceptsReturn = true; this.Controls.Add(txtRemark);说明:创建多行文本框,高度100px,添加垂直滚动条,允许Enter键换行,适用于备注、留言等长文本输入。 | 1. 兼容性:支持所有WinForm版本,HintText属性仅.NET 5+支持;2. 使用规范:- 场景匹配:单行文本(账号、姓名)用默认设置;密码用PasswordChar;长文本(备注)用Multiline+ScrollBars;- 输入限制:根据业务需求设置MaxLength,避免无效输入;敏感信息(密码)务必设置PasswordChar;3. 注意事项:- 空值处理:未输入时Text为empty字符串,非null,判断时需注意;- 多行与回车:Multiline=true时,需设置AcceptsReturn=true才能用Enter换行,否则Enter键触发窗体默认按钮;- 性能优化:大量文本输入(如几千字)时,建议设置Multiline=true并指定固定Size,避免频繁调整布局;- 输入验证:可通过KeyPress、Validating事件实现输入验证(如限制只能输入数字、必填项校验)。 |
| Timer(计时器控件) | 一、基础公共属性(继承自Component):1. Name、Tag、Enabled二、Timer特有核心属性:1. Interval、AutoReset | 1. Interval:int类型,计时间隔(毫秒),默认100;2. AutoReset:bool类型,是否自动重置计时(计时结束后重新开始),true(自动重置,默认)、false(仅触发一次);3. Enabled:bool类型,是否启用计时器,true(启用)、false(禁用,默认)。 | 1. 定时更新进度条:作用:定时触发事件,适用于定时任务、进度更新、动画效果等场景;示例:// 创建计时器 Timer timer = new Timer(); timer.Interval = 1000; // 间隔1秒 timer.AutoReset = true; timer.Enabled = false; // 创建进度条 ProgressBar pb = new ProgressBar(); pb.Location = new Point(20, 20); pb.Size = new Size(300, 20); pb.Maximum = 10; this.Controls.Add(pb); // 计时器触发事件 int progress = 0; timer.Tick += (s, e) => { progress++; pb.Value = progress; if (progress >= pb.Maximum) { timer.Stop(); timer.Enabled = false; MessageBox.Show("定时任务完成!"); progress = 0; } }; // 开始按钮 Button btnStart = new Button(); btnStart.Text = "开始定时"; btnStart.Location = new Point(20, 50); btnStart.Click += (s, e) => { if (!timer.Enabled) { pb.Value = 0; progress = 0; timer.Enabled = true; timer.Start(); } }; this.Controls.Add(btnStart);说明:创建1秒间隔的计时器,点击开始按钮后启用计时器,每秒钟更新进度条进度,进度达到最大值后停止计时器并提示,实现定时任务进度展示。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 间隔设置:根据任务需求合理设置Interval(如定时保存设为300000毫秒=5分钟,进度更新设为1000毫秒=1秒);- 启用控制:通过Enabled属性或Start()/Stop()方法控制计时器启停,避免不必要的资源消耗;- 线程注意:Timer的Tick事件在UI线程触发,可直接操作UI控件,无需跨线程调用;3. 注意事项:- 精度限制:Interval的最小精度为10毫秒,实际间隔可能因系统负载略有偏差,不适合高精度计时;- 单次触发:需执行单次定时任务时,设置AutoReset=false,触发一次后自动停止;- 资源释放:不再使用时需调用Dispose()方法释放资源,避免内存泄漏;- 与System.Timers.Timer区别:WinForm的Timer触发事件在UI线程,可直接操作UI;System.Timers.Timer触发事件在后台线程,操作UI需跨线程调用。 |
| ToolStrip(工具条控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、ToolStrip特有核心属性:1. Items、Dock、Orientation、RenderMode、ShowItemToolTips、GripStyle、AutoSize | 1. Items:ToolStripItemCollection类型,工具条项集合(包含ToolStripButton、ToolStripDropDownButton等);2. Dock:DockStyle枚举,停靠方式,Top(顶部,默认)、Bottom、Left、Right;3. Orientation:Orientation枚举,排列方向,Horizontal(水平,默认)、Vertical;4. RenderMode:ToolStripRenderMode枚举,渲染模式,System(系统样式)、Professional(专业样式)、ManagerRenderMode(管理器样式);5. ShowItemToolTips:bool类型,是否显示菜单项提示,true(显示,默认)、false(不显示);6. GripStyle:ToolStripGripStyle枚举, grip(拖动柄)样式,Visible(显示,默认)、Hidden(隐藏);7. AutoSize:bool类型,是否自动适应内容大小,true(自动适应,默认)、false(固定尺寸)。 | 1. 顶部工具条(Dock=Top):作用:展示常用功能按钮,提供快捷操作,适用于软件顶部功能区、编辑工具区;示例:// 创建工具条 ToolStrip tsMain = new ToolStrip(); tsMain.Dock = DockStyle.Top; tsMain.RenderMode = ToolStripRenderMode.Professional; tsMain.AutoSize = true; // 添加工具按钮 ToolStripButton tsbtnNew = new ToolStripButton("新建"); tsbtnNew.Image = Image.FromFile("new.png"); tsbtnNew.ImageScaling = ToolStripItemImageScaling.None; tsbtnNew.ToolTipText = "新建文档"; tsbtnNew.Click += (s, e) => { MessageBox.Show("新建文档"); }; tsMain.Items.Add(tsbtnNew); ToolStripButton tsbtnOpen = new ToolStripButton("打开"); tsbtnOpen.Image = Image.FromFile("open.png"); tsbtnOpen.ToolTipText = "打开文档"; tsMain.Items.Add(tsbtnOpen); // 添加下拉按钮 ToolStripDropDownButton tsddbtnSave = new ToolStripDropDownButton("保存"); tsddbtnSave.Image = Image.FromFile("save.png"); tsddbtnSave.DropDownItems.Add("保存", null, (s, e) => { MessageBox.Show("保存当前文档"); }); tsddbtnSave.DropDownItems.Add("另存为", null, (s, e) => { MessageBox.Show("文档另存为"); }); tsMain.Items.Add(tsddbtnSave); this.Controls.Add(tsMain);说明:创建顶部停靠的工具条,包含“新建”“打开”按钮和“保存”下拉按钮,显示专业样式,鼠标悬浮显示提示,提供常用文档操作快捷方式。 | 1. 兼容性:支持所有WinForm版本(.NET Framework 2.0+、.NET Core 3.0+);2. 使用规范:- 停靠位置:常用功能工具条建议停靠Top,编辑工具(如格式工具)可停靠Bottom;- 按钮布局:常用功能放在前面,下拉按钮用于功能分组(如多个保存相关功能);- 图标设置:工具按钮图标建议16x16尺寸,设置ImageScaling=None避免缩放变形;3. 注意事项:- 自动适应:AutoSize=true时,工具条高度自动匹配按钮大小,无需手动设置;- 拖动柄:GripStyle=Visible时,用户可拖动工具条调整位置(需设置AllowItemReorder=true);- 样式定制:通过RenderMode选择样式,也可自定义ToolStripRenderer实现个性化样式;- 与MenuStrip区别:ToolStrip侧重快捷功能按钮,MenuStrip侧重菜单导航(如文件、编辑菜单)。 |
| ToolTip(工具提示控件) | 一、基础公共属性(继承自Component):1. Name、Tag二、ToolTip特有核心属性:1. ToolTipTitle、ToolTipIcon、InitialDelay、ReshowDelay、AutoPopDelay、ShowAlways、IsBalloon | 1. ToolTipTitle:string类型,工具提示的标题文本;2. ToolTipIcon:ToolTipIcon枚举,工具提示的图标(None、Info、Warning、Error),默认None;3. InitialDelay:int类型,鼠标悬停到控件上后,显示工具提示的延迟时间(毫秒),默认500;4. ReshowDelay:int类型,从一个控件移动到另一个控件时,重新显示工具提示的延迟时间,默认100;5. AutoPopDelay:int类型,工具提示自动消失的时间(毫秒),默认5000;6. ShowAlways:bool类型,是否始终显示工具提示(即使控件禁用),true(是)、false(否,默认);7. IsBalloon:bool类型,是否显示为气球样式,true(是)、false(否,默认)。 | 1. 控件操作提示场景:作用:为控件添加悬停提示,说明控件功能,适用于按钮、图标、复杂控件的操作指引;示例:// 创建ToolTip组件 ToolTip toolTip = new ToolTip(); toolTip.InitialDelay = 300; // 悬停300毫秒显示 toolTip.AutoPopDelay = 3000; // 3秒后自动消失 toolTip.ReshowDelay = 100; toolTip.IsBalloon = true; // 气球样式 // 创建各种控件并绑定工具提示 // 保存按钮(信息图标) Button btnSave = new Button(); btnSave.Text = "保存"; btnSave.Location = new Point(20, 20); toolTip.SetToolTip(btnSave, "保存当前编辑的内容"); toolTip.SetToolTipTitle(btnSave, "操作提示"); toolTip.SetToolTipIcon(btnSave, ToolTipIcon.Info); this.Controls.Add(btnSave); // 删除按钮(警告图标) Button btnDelete = new Button(); btnDelete.Text = "删除"; btnDelete.Location = new Point(100, 20); toolTip.SetToolTip(btnDelete, "删除选中的数据,删除后不可恢复!"); toolTip.SetToolTipTitle(btnDelete, "警告"); toolTip.SetToolTipIcon(btnDelete, ToolTipIcon.Warning); this.Controls.Add(btnDelete); // 帮助图标(信息图标) PictureBox pbHelp = new PictureBox(); pbHelp.Image = Image.FromFile("help_icon.png"); pbHelp.Size = new Size(24, 24); pbHelp.Location = new Point(180, 20); toolTip.SetToolTip(pbHelp, "点击查看帮助文档,了解详细操作步骤"); this.Controls.Add(pbHelp);说明:创建工具提示组件,设置气球样式、300毫秒显示延迟、3秒自动消失,为保存按钮、删除按钮和帮助图标分别绑定不同标题、图标和提示文本,鼠标悬停时显示对应的工具提示,提升用户操作指引体验。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 提示简洁:工具提示文本需简洁明了,突出核心功能(如“保存当前内容”“删除不可恢复”),避免过长;- 图标匹配:根据提示类型选择图标(信息用Info、警告用Warning、错误用Error);- 延迟适配:InitialDelay建议设为300-500毫秒(既不立即显示也不等待过久),AutoPopDelay设为3000-5000毫秒;3. 注意事项:- 组件特性:ToolTip是Component组件,无需添加到窗体Controls集合,只需通过SetToolTip绑定控件;- 多控件绑定:一个ToolTip可绑定多个控件,为不同控件设置不同的提示文本;- 禁用控件提示:ShowAlways=true时,即使控件Enabled=false,悬停时仍会显示提示;- 气球样式:IsBalloon=true时,提示框为气球形状,更醒目,适合重点提示;- 动态提示:可通过SetToolTip动态修改控件的提示文本(如根据控件状态变化提示内容)。 |
| ToolTip(提示控件) | 一、基础公共属性(继承自Component):1. Name、Tag、Enabled二、ToolTip特有核心属性:1. ToolTipTitle、ToolTipIcon、InitialDelay、ReshowDelay、AutoPopDelay、ShowAlways、IsBalloon | 1. ToolTipTitle:string类型,提示框标题,默认空字符串;2. ToolTipIcon:ToolTipIcon枚举,提示框图标,None(无图标,默认)、Info(信息图标)、Warning(警告图标)、Error(错误图标);3. InitialDelay:int类型,鼠标悬浮到控件上后,延迟多久显示提示(毫秒),默认500;4. ReshowDelay:int类型,切换控件时重新显示提示的延迟(毫秒),默认100;5. AutoPopDelay:int类型,提示框自动消失的延迟(毫秒),默认5000;6. ShowAlways:bool类型,是否即使父控件禁用也显示提示,true(显示)、false(不显示,默认);7. IsBalloon:bool类型,是否显示为气球样式,true(气球样式)、false(普通样式,默认)。 | 1. 基础控件提示:作用:为其他控件添加悬浮提示,解释控件功能,适用于功能不直观的控件(如复杂按钮、输入框);示例:// 创建ToolTip控件 ToolTip toolTip = new ToolTip(); toolTip.InitialDelay = 300; // 延迟300毫秒显示 toolTip.AutoPopDelay = 3000; // 3秒后自动消失 toolTip.IsBalloon = true; // 气球样式 toolTip.ToolTipIcon = ToolTipIcon.Info; // 为按钮添加提示 Button btnExport = new Button(); btnExport.Text = "导出"; btnExport.Location = new Point(20, 20); btnExport.Size = new Size(80, 30); this.Controls.Add(btnExport); toolTip.SetToolTip(btnExport, "导出当前页面数据到Excel文件"); toolTip.SetToolTipTitle(btnExport, "导出功能"); // 为输入框添加提示 TextBox txtEmail = new TextBox(); txtEmail.Location = new Point(20, 60); txtEmail.Size = new Size(200, 25); this.Controls.Add(txtEmail); toolTip.SetToolTip(txtEmail, "请输入有效的邮箱地址(如xxx@example.com)"); toolTip.ToolTipIcon = ToolTipIcon.Warning;说明:创建气球样式提示控件,为“导出”按钮添加带标题和信息图标的提示,为邮箱输入框添加警告图标提示,提升用户操作指引。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 提示简洁:提示文本建议简洁明了(10-20字),突出核心功能或输入要求;- 延迟合理:InitialDelay建议300-500毫秒,避免过于灵敏;AutoPopDelay建议2000-5000毫秒,确保用户有足够时间阅读;- 图标匹配:功能说明用Info图标,输入校验用Warning图标,错误提示用Error图标;3. 注意事项:- 组件特性:ToolTip是Component组件,不是Control控件,无需添加到窗体的Controls集合;- 多控件共享:一个ToolTip可通过SetToolTip为多个控件添加提示;- 标题设置:SetToolTipTitle需与SetToolTip配合使用,单独设置无效;- 显示条件:默认仅当控件Enabled=true时显示,设置ShowAlways=true可突破此限制;- 手动显示/隐藏:可通过Show(string text, Control control)手动显示提示,Hide(Control control)手动隐藏。 |
| TrackBar(跟踪条控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Cursor、Tag二、TrackBar特有核心属性:1. Minimum、Maximum、Value、SmallChange、LargeChange、Orientation、TickStyle、TickFrequency | 1. Minimum/Maximum:int类型,跟踪条的最小/最大值,默认0/100;2. Value:int类型,当前滑块位置对应的数值,默认0;3. SmallChange:int类型,点击滑块两侧或按方向键时的增减步长,默认1;4. LargeChange:int类型,点击滑块与刻度之间区域时的增减步长,默认5;5. Orientation:Orientation枚举,排列方向,Horizontal(水平,默认)、Vertical;6. TickStyle:TickStyle枚举,刻度线样式,None(无刻度,默认)、TopLeft(水平上/垂直左)、BottomRight(水平下/垂直右)、Both(两侧);7. TickFrequency:int类型,刻度线间隔,默认1(每1个单位显示1个刻度)。 | 1. 水平跟踪条(音量调节):作用:直观调节数值大小,适用于音量、亮度、进度等调节场景;示例:// 创建跟踪条(音量调节) TrackBar tbVolume = new TrackBar(); tbVolume.Location = new Point(20, 20); tbVolume.Size = new Size(200, 45); tbVolume.Minimum = 0; tbVolume.Maximum = 100; tbVolume.Value = 70; // 默认音量70% tbVolume.SmallChange = 5; tbVolume.LargeChange = 10; tbVolume.TickStyle = TickStyle.BottomRight; tbVolume.TickFrequency = 10; tbVolume.ValueChanged += (s, e) => { // 同步显示当前音量 lblVolume.Text = $"当前音量:{tbVolume.Value}%"; }; this.Controls.Add(tbVolume); // 显示音量文本 Label lblVolume = new Label(); lblVolume.Location = new Point(230, 25); lblVolume.AutoSize = true; lblVolume.Text = $"当前音量:{tbVolume.Value}%"; this.Controls.Add(lblVolume);说明:创建水平跟踪条,范围0-100,默认音量70%,底部显示刻度(间隔10),拖动滑块或点击跟踪条时同步更新音量文本,适用于音频软件音量调节。2. 垂直跟踪条(亮度调节):示例:TrackBar tbBrightness = new TrackBar(); tbBrightness.Location = new Point(20, 60); tbBrightness.Size = new Size(45, 150); tbBrightness.Orientation = Orientation.Vertical; tbBrightness.Minimum = 0; tbBrightness.Maximum = 100; tbBrightness.Value = 50; tbBrightness.TickStyle = TickStyle.Right; tbBrightness.TickFrequency = 20; this.Controls.Add(tbBrightness);说明:垂直排列的跟踪条,右侧显示刻度(间隔20),适用于亮度、对比度等垂直调节场景。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 数值范围:根据调节场景设置合理范围(如音量0-100,亮度0-100);- 步长匹配:SmallChange设为精细调节步长,LargeChange设为快速调节步长;- 刻度设置:需要直观显示调节档位时,设置TickStyle和TickFrequency,刻度间隔建议为LargeChange的2倍;3. 注意事项:- 尺寸设置:水平跟踪条高度建议≥45,垂直跟踪条宽度建议≥45,确保滑块和刻度显示完整;- 数值约束:Value自动限制在Minimum和Maximum之间,无需额外校验;- 事件选择:ValueChanged事件在滑块位置变化时触发(实时更新),Scroll事件在滚动操作完成后触发;- 与ProgressBar区别:TrackBar用于用户主动调节数值,ProgressBar用于显示被动进度,功能方向相反。 |
| TreeView(树视图控件) | 一、基础公共属性(继承自Control):1. Name、Location、Size、Width、Height、Margin、Visible、Enabled、BackColor、ForeColor、Font、Cursor、Tag二、TreeView特有核心属性:1. Nodes、SelectedNode、ImageList、SelectedImageIndex、ImageIndex、ShowLines、ShowPlusMinus、ShowRootLines、PathSeparator | 1. Nodes:TreeNodeCollection类型,树节点集合,支持多级节点嵌套;2. SelectedNode:TreeNode类型,当前选中的节点;3. ImageList:ImageList类型,用于存储节点的图标资源;4. ImageIndex:int类型,节点默认图标在ImageList中的索引;5. SelectedImageIndex:int类型,节点选中时图标在ImageList中的索引;6. ShowLines:bool类型,是否显示节点之间的连接线,true(显示,默认)、false(隐藏);7. ShowPlusMinus:bool类型,是否显示展开/折叠按钮,true(显示,默认)、false(隐藏)。 | 1. 多级节点树视图:作用:展示层级结构数据,适用于导航菜单、文件目录、组织架构等场景;示例:// 创建TreeView TreeView tvNav = new TreeView(); tvNav.Location = new Point(20, 20); tvNav.Size = new Size(200, 250); tvNav.ShowLines = true; tvNav.ShowPlusMinus = true; tvNav.ShowRootLines = true; tvNav.PathSeparator = "→"; // 添加图标资源 ImageList imgList = new ImageList(); imgList.ImageSize = new Size(16, 16); imgList.Images.Add(Image.FromFile("folder.png")); imgList.Images.Add(Image.FromFile("file.png")); tvNav.ImageList = imgList; tvNav.ImageIndex = 0; tvNav.SelectedImageIndex = 0; // 构建多级节点 TreeNode root = new TreeNode("系统导航"); root.ImageIndex = 0; root.SelectedImageIndex = 0; TreeNode node1 = new TreeNode("数据管理"); node1.Nodes.Add(new TreeNode("用户管理", 1, 1)); node1.Nodes.Add(new TreeNode("角色管理", 1, 1)); root.Nodes.Add(node1); TreeNode node2 = new TreeNode("系统设置"); node2.Nodes.Add(new TreeNode("基础配置", 1, 1)); node2.Nodes.Add(new TreeNode("权限设置", 1, 1)); root.Nodes.Add(node2); tvNav.Nodes.Add(root); root.ExpandAll(); // 展开所有节点 this.Controls.Add(tvNav);说明:创建带图标的多级树视图,设置节点连接线、展开/折叠按钮,构建“系统导航”层级结构,默认展开所有节点,适用于软件左侧导航菜单。 | 1. 兼容性:支持所有WinForm版本;2. 使用规范:- 层级清晰:根据数据逻辑构建节点层级(如根节点→一级节点→二级节点),避免层级过深;- 图标适配:使用ImageList统一节点图标尺寸(建议16x16),区分不同类型节点(如文件夹/文件、菜单/子菜单);- 交互优化:常用ExpandAll()(展开所有)、CollapseAll()(折叠所有)方法控制节点展开状态;3. 注意事项:- 节点标识:可通过TreeNode的Tag属性存储节点关联数据(如用户ID、文件路径);- 路径获取:通过SelectedNode.FullPath获取节点完整路径(如“系统导航→数据管理→用户管理”);- 动态加载:海量节点场景建议采用动态加载(点击父节点时加载子节点),提升加载性能;- 事件:常用AfterSelect(节点选中后)、NodeMouseClick(节点鼠标点击)事件。 |