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#自定义控件—文本显示、文本设值的更多相关文章

  1. WinForm(C#)CheckedlistBox绑定数据,并获得选中的值(ValueMember)和显示文本(DisplayMember)

    本文中我将和大家讨论关于在WinForm开发中给CheckedlistBox空间绑定数据源,并获取控件中选中的所有元素的显示文本(DisplayMember)和对应的实际值(ValueMember)的 ...

  2. 使用jQuery为文本框、单选框、多选框、下拉框、下拉多选框设值及返回值的处理

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. 【freemaker】之文本,html文本,去除空格,字母大小写,循环数组,字符串截取,map取值,遍历map

    测试代码 @Test public void test06(){ try { root.put("emp", "<span color='red'>你好张三& ...

  4. Android控件_TextView(显示文本框控件)

    一.TextView控件的常用属性  1.android:id——控件的id   2.android:layout_width——设置控件的宽度 wrap_content(包裹实际文本内容) fill ...

  5. Opencv中在图片上显示文本

    1.cvPutText函数(在图像中加入文本) void cvPutText( CvArr* img, const char* text, CvPoint org, const CvFont* fon ...

  6. css 溢出文本显示省略号

    这个标题其实已经是一个老生常谈的问题了.很多时候,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没有这么宽,这时候最正常的做法就是 让超出宽度的部分文字用省略号(…)来表示.通常做法是网 ...

  7. EmWin 文本显示函数

    函数模型----------------------------------- 1:void GUI_DispChar(U16 c):  在当前窗口的当前文本位置处,使用当前字体显示单个字符.  c ...

  8. pyplot文本显示

    pyplot文本显示 pyplot中文字符显示 pyplot默认不支持中文字符,因为默认字体是sans-serif,英文字体不能显示中文 方法1,修改需要输出中文字符的地方 在有中文输出的地方,添加属 ...

  9. CSS的color属性并非只能用于文本显示

    虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过. 对于CSS的color属性,相信所有Web开发人员都使用过 ...

  10. css截断长文本显示

    实现 截断长文本显示处理,以前是通过后台的截取,但这种方法容易丢失数据,不利于SEO. 而通过前端css的截断,则灵活多变,可统一运用与整个网站. 这项技术主要运用了text-overflow属性,这 ...

随机推荐

  1. Java使用不同方式优雅拆分业务逻辑

    如何处理复杂的业务逻辑 在实际的业务开发当中,经常会遇到复杂的业务逻辑,可能实现出来的代码并没有什么问题,但是代码的可读性很差. 那么在实际开发中如何避免大面积的 if-else 代码块的问题? 补充 ...

  2. Spring里面bean的依赖和继承

    继承 bean继承:两个类之间大多数的属性都相同,避免重复配置,通过bean标签的parent属性重用已有的Bean元素的配置信息 继承指的是配置信息的复用,和java类的继承没有关系 video.j ...

  3. 流式查询1. mybatis的游标Cursor,分页大数据查询

    流式查询流式查询 指的是查询成功后不是返回一个集合而是返回一个迭代器,应用可以通过迭代器每次取一条查询结果.流式查询的好处是能够降低内存使用.例如我们想要从数据库取 1000 万条记录而又没有足够的内 ...

  4. 利用Selenium和PhantomJS绕过接口加密的技术探索与实践

    selenium+phantomjs绕过接口加密 我们为什么需要selenium 之前我们讲解了 Ajax 的分析方法,利用 Ajax 接口我们可以非常方便地完成数据的爬取.只要我们能找到 Ajax ...

  5. 基于vsftpd搭建项目文件服务器

    vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 ...

  6. C++使用gnuplot-cpp库绘制图像

    最近想要对一些时变的变量进行可视化,搜索来搜索去选择了使用gnuplot这个工具. sudo apt-get install gnuplot sudo apt-get install gnuplot- ...

  7. 搭建自动化 Web 页面性能检测系统 —— 部署篇

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:琉易 liuxianyu.cn 这一篇是系列文章: 搭建自 ...

  8. 【Vue2】Computed 计算属性

    计算属性在编写的时候是一个方法 但是在调用的时候作为属性使用 <!DOCTYPE html> <html lang="en"> <head> & ...

  9. 【Redis】03 Redis 数据类型、相关补充、常用命令

    redis的数据类型 1,概述 使用Redis进行应用设计和开发的一个核心概念是数据类型. 与关系数据库不同,在Redis中不存在需要我们担心的表, 在使用Redis进行应用设计和开发时,我们首先应该 ...

  10. 【转载】科研写作入门 —— 聊聊Science Research Writing for non-native Speakers of English这本书

    原地址: https://zhuanlan.zhihu.com/p/623882027 平行侠: 今天我们聊一聊Science Research Writing for non-native Spea ...