C#自定义控件—文本显示、文本设值
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
C#自定义控件—文本显示、文本设值的更多相关文章
- WinForm(C#)CheckedlistBox绑定数据,并获得选中的值(ValueMember)和显示文本(DisplayMember)
本文中我将和大家讨论关于在WinForm开发中给CheckedlistBox空间绑定数据源,并获取控件中选中的所有元素的显示文本(DisplayMember)和对应的实际值(ValueMember)的 ...
- 使用jQuery为文本框、单选框、多选框、下拉框、下拉多选框设值及返回值的处理
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 【freemaker】之文本,html文本,去除空格,字母大小写,循环数组,字符串截取,map取值,遍历map
测试代码 @Test public void test06(){ try { root.put("emp", "<span color='red'>你好张三& ...
- Android控件_TextView(显示文本框控件)
一.TextView控件的常用属性 1.android:id——控件的id 2.android:layout_width——设置控件的宽度 wrap_content(包裹实际文本内容) fill ...
- Opencv中在图片上显示文本
1.cvPutText函数(在图像中加入文本) void cvPutText( CvArr* img, const char* text, CvPoint org, const CvFont* fon ...
- css 溢出文本显示省略号
这个标题其实已经是一个老生常谈的问题了.很多时候,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没有这么宽,这时候最正常的做法就是 让超出宽度的部分文字用省略号(…)来表示.通常做法是网 ...
- EmWin 文本显示函数
函数模型----------------------------------- 1:void GUI_DispChar(U16 c): 在当前窗口的当前文本位置处,使用当前字体显示单个字符. c ...
- pyplot文本显示
pyplot文本显示 pyplot中文字符显示 pyplot默认不支持中文字符,因为默认字体是sans-serif,英文字体不能显示中文 方法1,修改需要输出中文字符的地方 在有中文输出的地方,添加属 ...
- CSS的color属性并非只能用于文本显示
虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过. 对于CSS的color属性,相信所有Web开发人员都使用过 ...
- css截断长文本显示
实现 截断长文本显示处理,以前是通过后台的截取,但这种方法容易丢失数据,不利于SEO. 而通过前端css的截断,则灵活多变,可统一运用与整个网站. 这项技术主要运用了text-overflow属性,这 ...
随机推荐
- Java高效率查询Mysql节点树数据
示例 目前有一个功能:任务计划管理,必然存在多级子任务的父子级关系,每个任务还会存在其它数据的关联表. mysql无法一次性递归查出想要的数据结构,想必很多人都会是通过根目录递归查询数据库的方式查出树 ...
- MySQL 索引失效
全列匹配 最佳左前缀法则 不在索引列上做任何操作(计算.函数.自动.手动类型转换),会导致索引失效 存储引擎不能使用索引中范围条件右边的列 尽量使用覆盖索引(只访问索引的查询(索引和查询列一致)),少 ...
- vue中sass与SCSS的区别
在Vue中,通常使用SCSS(Sassy CSS)而不是Sass来编写样式.SCSS是Sass的一种语法扩展,提供了更多的功能和灵活性,因此在Vue项目中更常见.下面是Sass和SCSS之间的主要区别 ...
- jQuery中hide()和display的区别在于它们实现元素隐藏的方式不同。
1. hide()方法是jQuery提供的一个函数,用于隐藏元素.当使用hide()方法时,元素会被设置为display:none,即不显示在页面上,但仍然占据着原来的空间.隐藏后的元素可以通过调用s ...
- oeasy教您玩转vim - 43 - # 替换模式
替换模式 回忆上节课内容 上次我们学到的最有用的就是c 他和d的区别就是删除之后进入到插入模式 c可以配合motion 可以用ciw来快速删除当前光标所在的单词 可i和a 配合的文字块 w wor ...
- 指针_C
指针的代码 // Code file created by C Code Develop #include "ccd.h" #include "stdio.h" ...
- rtmp流程解析
如果rtmp推流地址:rtmp://服务器地址:rtmp端口/路径/名称对应的websocket地址:ws://服务器地址:websocket端口/路径/名称.flv举例:live作为路径,s作为流名 ...
- Charles抓包配置、常见问题和解决方法
1.下载安装charles,官方下载地址:https://www.charlesproxy.com/download/ 如图,下载所对应系统需要的相应版本即可. 2.解压Charles包,双击Char ...
- web3的的入口,钱包,为什么说加密钱包是Web 3活动入口
Web3.0让未来充满了想象力,或许超越当今人类所知的互联网.有可能彻底改变人类社交互动.商业往来和整个互联网经济.同时数字加密货币行业从业者对Web 3.0赋予了很高期待,希望通过结合后打破互联网巨 ...
- 基于 TrueLicense 项目证书生成
一.创建公钥私钥 1.首先要用 KeyTool 工具来生成私匙库:(-alias别名 -validity 3650 表示10年有效,这个时间不是License的过期时间) keytool -genke ...