在 C# WinForm 中,System.Windows.Forms.Control 是所有可视化控件的基类,几乎所有能在窗体上显示、交互的组件都直接或间接继承自它。以下是工业上位机开发中高频使用的衍生控件分类总结,按功能场景整理,附核心用途和继承关系:
一、核心基础控件(直接继承 Control)
| 控件类名 | 英文全称 | 核心用途(上位机场景) | 关键特性 |
|---|---|---|---|
| Label | Label Control | 显示静态文本(如参数名称、状态提示) | 不可编辑,支持文字对齐、自动换行 |
| Button | Button Control | 触发操作(如打开串口、发送数据、切换页面) | 支持点击事件、禁用状态、图标显示 |
| TextBox | Text Box Control | 输入/显示文本(如参数值、发送数据内容) | 支持单行/多行、密码框模式、文本限制 |
| Panel | Panel Control | 容器控件(分组控件、多页面切换载体) | 支持停靠、边框样式,作为子控件容器 |
| PictureBox | Picture Box Control | 显示图片(如设备状态图标、流程图) | 支持加载本地图片、资源图片,缩放模式 |
| ProgressBar | Progress Bar Control | 显示进度(如数据传输进度、任务完成度) | 支持设置最大值、进度值,自动动画 |
二、选择类控件(继承 ListControl/ButtonBase)
| 控件类名 | 英文全称 | 核心用途(上位机场景) | 关键特性 |
|---|---|---|---|
| ComboBox | Combo Box Control | 下拉选择(如串口选择、波特率配置) | 支持下拉列表、可输入、默认选中项 |
| ListBox | List Box Control | 列表选择(如设备列表、日志类型筛选) | 支持单选/多选、滚动条、批量添加项 |
| CheckBox | Check Box Control | 布尔选择(如是否启用Hex发送、自动保存日志) | 支持选中/未选中状态,三态模式 |
| RadioButton | Radio Button Control | 单选选择(如数据位8/7位、校验位无/奇/偶) | 同组内互斥,需配合 GroupBox 使用 |
| CheckedListBox | Checked List Box Control | 带复选框的列表(如多设备选择、多参数启用) | 结合 ListBox 和 CheckBox 特性 |
三、容器类控件(继承 Control,用于布局分组)
| 控件类名 | 英文全称 | 核心用途(上位机场景) | 关键特性 |
|---|---|---|---|
| GroupBox | Group Box Control | 分组控件(如串口参数组、报警设置组) | 带标题边框,用于逻辑分组 |
| TabControl | Tab Control | 多页面切换(如参数配置页、数据显示页、日志页) | 自带标签栏,支持多 TabPage 切换 |
| SplitContainer | Split Container Control | 分割窗口(如左侧设备列表+右侧数据显示) | 可拖动分割线,支持水平/垂直分割 |
| FlowLayoutPanel | Flow Layout Panel Control | 流式布局(如动态添加的设备按钮、状态指示灯) | 自动换行,控件按顺序排列 |
| TableLayoutPanel | Table Layout Panel Control | 表格布局(如参数表单、多设备状态显示) | 按行列划分单元格,控件自动填充 |
四、数据显示类控件(继承 Control,用于数据可视化)
| 控件类名 | 英文全称 | 核心用途(上位机场景) | 关键特性 |
|---|---|---|---|
| DataGridView | Data Grid View Control | 表格数据显示(如采集数据日志、设备参数列表) | 支持排序、筛选、编辑、行高列宽调整 |
| Chart | Chart Control | 图表显示(如温度趋势图、转速曲线图) | 支持折线图、柱状图、饼图,需添加 System.Windows.Forms.DataVisualization 引用 |
| RichTextBox | Rich Text Box Control | 富文本显示(如带格式的日志、多颜色报警信息) | 支持字体样式、颜色、换行、滚动 |
| StatusStrip | Status Strip Control | 状态栏显示(如串口连接状态、当前时间、数据计数) | 底部显示,支持添加标签、进度条 |
五、特殊功能控件(继承 Control,工业场景专用)
| 控件类名 | 英文全称 | 核心用途(上位机场景) | 关键特性 |
|---|---|---|---|
| Timer | Timer Control | 定时任务(如定时采集数据、定时发送心跳包) | 后台定时触发,支持设置间隔时间 |
| SerialPort | Serial Port Control | 串口通信(核心控件,无需可视化) | 继承 Component(间接继承 Control),用于串口数据收发 |
| DateTimePicker | Date Time Picker Control | 日期时间选择(如查询指定时间段日志、设置定时任务时间) | 支持日期、时间、日期时间三种模式 |
| NumericUpDown | Numeric Up Down Control | 数值调节(如设置采样间隔、报警阈值) | 支持上下箭头调节,设置范围和步长 |
六、继承关系核心逻辑
- 直接继承 Control:Label、Button、TextBox、Panel 等基础控件,具备 Control 的核心属性(如
Visible、Enabled、Location、Size)和事件(如Click、Load、Paint)。 - 间接继承 Control:如 ComboBox 继承 ListControl,ListControl 继承 Control;DataGridView 继承 ScrollableControl,ScrollableControl 继承 Control。
- 特殊组件:SerialPort、Timer 继承
Component(而非直接继承 Control),无可视化界面,但属于 WinForm 核心组件,依赖 Control 的生命周期管理。
上位机开发高频控件组合推荐
- 串口配置区:GroupBox + ComboBox(串口选择)+ ComboBox(波特率)+ RadioButton(校验位)+ NumericUpDown(数据位)+ Button(打开/关闭串口)。
- 数据收发区:TextBox(发送内容)+ Button(发送)+ RichTextBox(接收日志)+ CheckBox(Hex格式)。
- 数据监控区:DataGridView(数据表格)+ Chart(趋势图)+ Timer(定时刷新)。
- 多页面切换:TabControl(含参数页、监控页、日志页)或 Panel + UserControl(模块化页面)。
需要我帮你整理一份 WinForm 控件属性/事件速查表(含上位机开发常用控件的核心属性和事件),方便你在设计器中快速配置吗?
WinForm 控件属性/事件速查表(工业上位机专用)
整理了上位机开发中 高频控件 的核心属性、关键事件,按功能分类,标注用途和实用场景,设计器中直接对应配置,新手可快速查阅:
一、基础交互控件(Button/Label/TextBox)
| 控件类名 | 核心属性(设计器配置) | 关键事件(业务绑定) | 上位机用途 |
|---|---|---|---|
| Button | - Text:按钮文字(如“打开串口”)- Enabled:是否可用(串口未打开时禁用发送按钮)- Dock:停靠方式(如顶部对齐)- FlatStyle:扁平样式(工业风UI) |
- Click:点击触发(核心事件,绑定串口打开、数据发送等逻辑)- MouseEnter/MouseLeave:鼠标悬停/离开(高亮提示) |
触发操作(打开串口、发送数据、切换页面、保存日志) |
| Label | - Text:显示文本(如“波特率:”“设备状态:”)- TextAlign:文字对齐(居中/左对齐)- ForeColor:文字颜色(报警时设为红色)- Font:字体大小(适配工业屏幕) |
- 无核心事件(静态显示,无需绑定) | 显示说明文字、状态提示(如“串口已连接”) |
| TextBox | - Text:输入/显示内容(如发送数据、参数值)- Multiline:是否多行(日志显示设为True)- ReadOnly:是否只读(接收日志设为True)- PasswordChar:密码框(隐藏敏感参数)- MaxLength:最大输入长度(限制参数输入) |
- TextChanged:文本变化(实时显示输入内容)- KeyPress:按键触发(按Enter发送数据) |
输入参数、显示单行数据、临时编辑内容 |
二、选择类控件(ComboBox/CheckBox/RadioButton)
| 控件类名 | 核心属性(设计器配置) | 关键事件(业务绑定) | 上位机用途 |
|---|---|---|---|
| ComboBox | - Items:下拉选项(设计器直接添加波特率、串口列表)- SelectedIndex:默认选中索引(如默认选中9600波特率)- DropDownStyle:下拉样式(仅下拉/可输入)- Sorted:是否排序(串口列表按名称排序) |
- SelectedIndexChanged:选中项变化(切换串口、波特率时更新配置) |
下拉选择(串口端口、波特率、数据位、停止位、校验位) |
| CheckBox | - Text:选项文字(如“Hex发送”“自动保存日志”)- Checked:默认是否选中(如默认ASCII发送,Hex设为False)- ThreeState:三态模式(可选,如“未配置/启用/禁用”) |
- CheckedChanged:选中状态变化(切换Hex/ASCII发送模式) |
布尔选择(启用流控、自动换行、报警提示) |
| RadioButton | - Text:选项文字(如“无校验”“奇校验”)- Checked:默认是否选中- GroupName:分组名(同组内互斥,如校验位选项设为同一组) |
- CheckedChanged:选中状态变化(切换校验位、数据位配置) |
单选选择(校验位、数据位、停止位等互斥参数) |
三、容器与布局控件(Panel/GroupBox/TabControl)
| 控件类名 | 核心属性(设计器配置) | 关键事件(业务绑定) | 上位机用途 |
|---|---|---|---|
| Panel | - Dock:停靠方式(如填充父容器,作为页面载体)- BorderStyle:边框样式(分组显示时设为FixedSingle)- BackColor:背景色(工业风设为浅灰) |
- 无核心事件(仅作为容器) | 控件分组(如串口配置区、数据收发区)、多页面切换载体 |
| GroupBox | - Text:分组标题(如“串口参数配置”“报警设置”)- BorderStyle:边框样式- Font:标题字体(加粗突出分组) |
- 无核心事件 | 逻辑分组(将串口参数、报警阈值等相关控件归类) |
| TabControl | - TabPages:添加选项卡(设计器直接添加“参数配置”“数据监控”“日志查询”)- SelectedIndex:默认选中页- Dock:停靠方式(填充父容器) |
- SelectedIndexChanged:切换页面(加载对应页面数据) |
多页面管理(将不同功能模块分离,节省界面空间) |
四、数据显示控件(DataGridView/RichTextBox/Chart)
| 控件类名 | 核心属性(设计器配置) | 关键事件(业务绑定) | 上位机用途 |
|---|---|---|---|
| DataGridView | - Columns:列定义(设计器添加“时间戳”“设备ID”“数据值”列)- Dock:停靠方式(填充容器)- ReadOnly:是否只读(采集数据设为True)- AllowSorting:是否允许排序(日志按时间排序)- RowHeadersVisible:是否显示行号(设为False节省空间) |
- CellClick:点击单元格(查看数据详情)- DataSource:数据绑定(绑定List集合显示采集数据) |
表格显示采集数据、设备参数列表、历史日志 |
| RichTextBox | - Multiline:多行显示(默认True)- ReadOnly:只读(日志显示设为True)- WordWrap:自动换行(日志自动换行)- ForeColor:文字颜色(接收数据黑色、发送数据蓝色、报警红色) |
- TextChanged:文本变化(自动滚动到底部) |
富文本日志显示(区分发送/接收数据、显示报警信息) |
| Chart | - Series:数据系列(设计器添加“温度”“转速”系列)- ChartAreas:图表区域(设置坐标轴、网格线)- ChartType:图表类型(折线图/柱状图/饼图)- Legend:图例显示(是否显示系列名称) |
- 无核心事件(通过代码添加数据点) | 数据可视化(温度趋势图、转速曲线图、设备运行状态占比) |
五、特殊功能控件(SerialPort/Timer/NumericUpDown)
| 控件类名 | 核心属性(设计器配置) | 关键事件(业务绑定) | 上位机用途 |
|---|---|---|---|
| SerialPort(非可视化) | - PortName:串口名称(如“COM4”)- BaudRate:波特率(9600/115200等)- DataBits:数据位(默认8)- Parity:校验位(None/Odd/Even)- StopBits:停止位(One)- Handshake:流控(None) |
- DataReceived:数据接收(核心事件,处理串口接收数据)- ErrorReceived:错误接收(处理串口异常) |
串口通信核心(数据收发、设备连接) |
| Timer | - Interval:定时间隔(毫秒,如1000=1秒)- Enabled:是否启用(默认False,启动后开始定时) |
- Tick:定时触发(核心事件,定时采集数据、刷新UI、发送心跳包) |
定时任务(数据采集、日志保存、UI刷新、设备状态检测) |
| NumericUpDown | - Minimum:最小值(如采样间隔最小100ms)- Maximum:最大值(如采样间隔最大10000ms)- Value:当前值(默认值)- Increment:步长(每次增减100ms) |
- ValueChanged:值变化(实时更新采样间隔配置) |
数值调节(采样间隔、报警阈值、发送频率等参数) |
六、上位机常用控件组合配置示例
| 功能模块 | 控件组合 | 核心配置要点 |
|---|---|---|
| 串口配置区 | GroupBox + ComboBox(串口)+ ComboBox(波特率)+ RadioButton(校验位)+ NumericUpDown(数据位)+ Button(打开/关闭) | - 串口ComboBox设为Sorted=True- 校验位RadioButton设为同一 GroupName- 未打开串口时,发送按钮 Enabled=False |
| 数据收发区 | TextBox(发送内容)+ Button(发送)+ CheckBox(Hex发送)+ RichTextBox(接收日志) | - 接收日志RichTextBox设为ReadOnly=True+WordWrap=True- Hex发送CheckBox选中时,发送数据按Hex格式转换 |
| 数据监控区 | DataGridView(数据表格)+ Chart(趋势图)+ Timer(定时刷新) | - DataGridView添加“时间戳”“数据值”列 - Chart设为折线图,Timer间隔1000ms更新数据点 |
| 报警设置区 | GroupBox + NumericUpDown(上限阈值)+ NumericUpDown(下限阈值)+ CheckBox(启用报警)+ Label(状态提示) | - 阈值NumericUpDown设置合理范围 - 启用报警后,Label颜色设为红色并显示“报警启用” |
速查技巧
- 设计器中选中控件,按
F4调出属性面板,常用属性(Dock/Text/Enabled)在面板顶部,可快速筛选; - 事件绑定:选中控件→右键→属性→事件(闪电图标)→双击事件名自动生成代码(如
Button的Click事件); - 工业上位机优先选择“简洁耐用”的属性配置:
FlatStyle扁平按钮、浅灰背景色、无多余动画,提升操作效率。
需要我帮你整理一份 设计器操作分步指南(含控件拖拽、属性配置、事件绑定的截图+步骤),让你快速上手配置控件吗?