winform控件开发一之复合控件开发(1)模拟量显示1
winform控件开发包括三种类型
- 复合控件,又称为组合控件
- 扩展控件
- 自定义控件
复合控件:
复合控件,又称为组合控件,一般是将现有控件功能进行组合形成一个新的控件。
举例:
设计一个工控中常用的模拟量控件,可以显示变量的名称,变量值和单位,如下图所示
在这个复合空间中,左边使用一个lable显示变量名,中间使用一个textbox显示变量值,右边也是一个lable显示单位,
为了更好的布局这三个控件,这里使用了tableLayout控件,将其设置为1行3列,分别将两个lable和一个textbox添加到tableLayout设置的三个空格中
复合控件创建步骤如下:
添加“新建项”》选择“用户控件”》输入名称“AnalogDisplay”点击确定
这里注意,复合控件使用的是用户控件模板创建的,其继承UserControl类
不同于复合控件,扩展控件继承需要扩展的控件,而自定义控件继承Control类,具体方式参考后续笔记。
具体实现:
或者:
代码如下:
using System; using System.Drawing; using System.Windows.Forms; namespace 各种C_sharp功能测试 { public partial class AnalogDisplay : UserControl { public AnalogDisplay() { InitializeComponent(); txtVarValue.KeyDown += TxtVarValue_KeyDown; } //变量名 public string VarName { get { return lblVarName.Text; } set { lblVarName.Text = value; } } //变量值 public string VarValue { get { return txtVarValue.Text; } set { txtVarValue.Text = value; } } //单位 public string VarUnit { get { return lblVarUnit.Text; } set { lblVarUnit.Text = value; } } //设置显示字体 public Font TextFont { get { return lblVarName.Font; } set { lblVarName.Font = value; txtVarValue.Font = value; lblVarUnit.Font = value; } } //控制显示还是输入 public bool InputEnable { get { return txtVarValue.Enabled; } set { txtVarValue.Enabled = value; } } //添加一个事件,当输入变量值并按下回车键时触发该事件 public event EventHandler<AnalogDisplayArg> ValueChanged; private void TxtVarValue_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (!string.IsNullOrEmpty(VarValue)) { ValueChanged?.Invoke(this, new AnalogDisplayArg(VarValue)); } } } } public class AnalogDisplayArg : EventArgs { public string Value { get; set; } public AnalogDisplayArg(string value) { Value = value; } } }
分类:
winform控件开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-06-21 Task基础-创建Task,Task传参,获取Task返回值
2022-06-21 Task的休眠
2022-06-21 Task的取消