C#自定义控件—文本显示、文本设值

news/2024/9/19 22:06:53/文章来源:https://www.cnblogs.com/guoenshuo/p/18393718

C#用户控件之文本显示、设定组件

如何绘制一个便捷的文本显示组件、文本设值组件(TextShow,TextSet)?

绘制此控件的目的就是方便一键搞定标签显示(可自定义方法显示文本颜色等),方便自定义方法又省略了挨个拖拽的过程

纯定义属性
【文本设定】:字体、标签、值、单位;事件方法:Enter、Leave、KeyDown
【文本显示】:变量名称、变量值、单位、字体、控件刻度

直接上代码


【文本设定】

public partial class TextSet : UserControl
{public TextSet(){InitializeComponent();this.txt_Value.ReadOnly = true;}#region 属性  字体、标签、值、单位private Font textFont = new Font("微软雅黑", 12);[Browsable(true)][Category("布局_G")][Description("字体格式")]public Font TextFont{get { return textFont; }set{if (value != null){textFont = value;this.lbl_Title.Font = this.lbl_Unit.Font = this.txt_Value.Font = textFont;}}}private Color textColor = Color.Black;[Browsable(true)][Category("布局_G")][Description("文本颜色")]public Color TextColor{get { return textColor; }set{textColor = value;this.lbl_Title.ForeColor = this.lbl_Unit.ForeColor = this.txt_Value.ForeColor = textColor;}}private float textScale = 0.37f;[Browsable(true)][Category("布局_G")][Description("控件刻度")]public float TextScale{get { return textScale; }set{textScale = value;this.tableLayoutPanel1.ColumnStyles[0].Width = (this.Width - textScale * this.Width) * 0.75f;this.tableLayoutPanel1.ColumnStyles[1].Width = textScale * this.Width;this.tableLayoutPanel1.ColumnStyles[2].Width = (this.Width - textScale * this.Width) * 0.25f;}}private string varTitle = "变量名称";[Browsable(true)][Category("布局_G")][Description("变量名称")]public string VarTitle{get { return varTitle; }set{varTitle = value;this.lbl_Title.Text = varTitle;}}private string varValue = "21.50";[Browsable(true)][Category("布局_G")][Description("输入值")]public string VarValue{get { return varValue; }set{varValue = value;this.txt_Value.Text = varValue;}}private string varUnit = "℃";[Browsable(true)][Category("布局_G")][Description("单位")]public string VarUnit{get { return varUnit; }set{varUnit = value;this.lbl_Unit.Text = varUnit;}}#endregion#region  输入使能事件//正在输入标志位public bool IsSetting { get; set; }private void txt_Value_Enter(object sender, EventArgs e){IsSetting = true;this.txt_Value.ReadOnly = false;}private void txt_Value_Leave(object sender, EventArgs e){IsSetting = false;this.txt_Value.ReadOnly = true;}//添加输入完成事件public event EventHandler SettingChanged;private void txt_Value_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.Enter){//技巧:输入完成移动焦点~输入框变灰this.lbl_Title.Focus();//激活触发事件SettingChanged?.Invoke(this, e);}}#endregion
}

【文本显示】

public partial class TextShow : UserControl
{public TextShow(){InitializeComponent();}#region Fields 变量名称、变量值、单位、字体、控件刻度//[Browsable(true)]//[Category("布局_G")]//[Description("变量名称")]//public String VarName { get; set; }private Font textFont = new Font("Segoe UI Variable Display", 15, FontStyle.Bold);[Browsable(true)][Category("布局_G")][Description("字体格式")]public Font TextFont{get { return textFont; }set{if (value != null){textFont = value;this.lbl_Value.Font = this.lbl_Unit.Font = textFont;}}}private Color textColor = Color.Blue;[Browsable(true)][Category("布局_G")][Description("文本颜色")]public Color TextColor{get { return textColor; }set{textColor = value;this.lbl_Value.ForeColor = this.lbl_Unit.ForeColor = textColor;}}private string varVlaue = "1.0E-5";[Browsable(true)][Category("布局_G")][Description("变量值")]public string VarVlaue{get { return varVlaue; }set{varVlaue = value;this.lbl_Value.Text = varVlaue;}}private string unit = "Pa";[Browsable(true)][Category("布局_G")][Description("单位")]public string Unit{get { return unit; }set{unit = value;this.lbl_Unit.Text = unit;}}private float textScale = 0.6f;[Browsable(true)][Category("布局_G")][Description("控件刻度")]public float TextScale{get { return textScale; }set{textScale = value;this.tableLayoutPanel1.ColumnStyles[0].Width = textScale * this.Width;this.tableLayoutPanel1.ColumnStyles[1].Width = this.Width - textScale * this.Width;}}#endregion

自定义绘制组件更方便以后直接使用,是一件一劳永逸的事情。

End

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/791871.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搜索组件优化 - Command ⌘K

今天心血来潮想在 `blog` 上找一篇文章,用搜素的功能发现搜不出来😂,搜索挂了?然后突然想起来之前由于想着在 `blog` 中可能加一些私有的配置或者尝鲜的功能,所有 `fork` 了一份变成 私有项目了,这样就不符合 `DocSearch` 的 网站必须是公开的这个限制了。前言: DevNow…

项目协同开发 or 拷贝项目

项目协同开发 or 拷贝项目 给另人项目时一般需要给代码 requiremenets.txtpip freeze > requiremenets.txt #requiremenets.txt 生成方式获得别人代码 pip install -r requiremenets.txt # 自动将:requiremenets.txt 对应的版本进行安装无网络问题-解决安装第三方模块…

深入浅出Stream流

Java 8的新特性之一就是流stream,配合同版本出现的 Lambda ,使得操作集合(Collection)提供了极大的便利。 案例引入 在JAVA中,涉及到对数组、Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理。 假设遇到了这么…

决策树之——ID3算法及示例

0 前言本文主要介绍决策树ID3算法,并举出构建示例帮助理解。 读者需要具备的知识:信息熵、条件熵、信息增益。 本文使用数据集为:游玩数据集 1.1节。1 ID3算法简述 ID3(Iterative Dichotomiser 3)算法是一种经典的决策树学习算法,由Ross Quinlan于1986年提出。该算法的主…

AtCoder ABC 369题解

题解前言 本题解部分思路来源于网络,仅供参考 ! A - 369 题目大意 给定 \(A\) , \(B\) 两个整数,求有多少个整数 \(x\) 使得可以通过某种排列使得 \(A\) ,\(B\) ,\(x\) 为等差数列。解题思路 稍加分析即可得到:如果 \(A = B\) 则结果为 \(1\) 。如果 \(A = B\) 但 \((A …

三路快速排序

// 快速排序 function quickSort(arr) {if (arr.length <= 1) {return arr;}const pivot = arr[0];const left = [];const right = [];for (let i = 1; i < arr.length; i++) {if (arr[i] < pivot) {left.push(arr[i]);} else {right.push(arr[i]);}}return quickSort…

三路排序

// 快速排序 function quickSort(arr) {if (arr.length <= 1) {return arr;}const pivot = arr[0];const left = [];const right = [];for (let i = 1; i < arr.length; i++) {if (arr[i] < pivot) {left.push(arr[i]);} else {right.push(arr[i]);}}return quickSort…

8.30 ~ 9.8

文化课奥赛8.30 返校日。 又回到了原来的班(和化奥一个班),一个班有 69 个人; 然后我坐在最角上 🙃 第二天还要开学考试,还有 60% 的原题,这我拿头靠考啊; 遂摆。 发现了坐最后面的好处:离得远老师看不到。 8.31 开学考试。 考试顺序:语 \(\to\) 物 \(\to\) 数 \(\t…

【Spring Boot】整合MyBatis

**整合MyBatis**前言 Spring Boot和MyBatis都是非常流行的Java框架。Spring Boot简化了Spring应用的开发,而MyBatis则是一个优秀的持久层框架,支持自定义SQL、存储过程以及高级映射。 mybatis官方文档:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconf…

C#设计模式入门实战教程

什么是设计模式 设计模式是对面向对象设计中反复出现的问题的解决方案。它们提供了被反复使用、多数人知晓的、经过分类编目的代码设计经验总结。 设计模式的作用提高代码的可重用性:通过定义一套标准的解决方案,设计模式使得相同或类似的问题可以在不同的项目中复用相同的代…

ES安装

1.初识elasticsearch Elasticsearch的官方网站如下: https://www.elastic.co/cn/elasticsearch/ 1.1.认识和安装 Elasticsearch是由elastic公司开发的一套搜索引擎技术,它是elastic技术栈中的一部分。完整的技术栈包括:Elasticsearch:用于数据存储、计算和搜索 Logstash/Be…

java-URLDNS 链条审计

java-URLDNS 链条审计 URLDNS 链条,是我们学习 java 反序列化的启蒙链条,通过 java 内置的类函数调用,达到 DNS 外带数据的目的。 首先让我们来看一个小实验 从 dnslog.cn 平台获取一个域名 public class urlDNS {public void URL() throws UnknownHostException {InetAddre…