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. ubuntu16.04 python2&3 pip升级后报错:sys.stderr.write(f"ERROR: {exc}")

    ubuntu16.04 python2&3 pip升级后报错: sys.stderr.write(f"ERROR: {exc}") 描述 最近使用ubuntu16.04上的 ...

  2. 从 Helm 到 Operator:Kubernetes应用管理的进化

    Helm 的作用 在开始前需要先对 kubernetes Operator 有个简单的认识. 以为我们在编写部署一些简单 Deployment 的时候只需要自己编写一个 yaml 文件然后 kubec ...

  3. Spring注解之依赖注入@Autowired和@Resource

    Spring常见的DI方式 字段注入(Field Injection) 在字段上使用@Autowired/Resource注解 字段注入是日常开发中使用最多的一种注入方式,它的实现代码如下: @Aut ...

  4. P1387

    #include<iostream> #include<utility> using namespace std; typedef long long ll; #define ...

  5. Linux自己制作rpm包

    制作rpm包 由源码包---->rpm包 安装制作rpm包工具包rpm-build 在制作过程中需要源码包和配置文件 rpmbuild制作rpm包的原理: 1.首先rpmbuild会先将源码包进 ...

  6. RPC和 HTTP协议

    RPC 和HTTP 的区别 服务发现 HTTP,知道服务域名,可以通过 DNS 解析 得到 服务的IP地址,从而进行访问 RPC 需要一个专门的中间服务去保存服务名和IP信息(注册中心,nacos.c ...

  7. 平衡树之Splay树详解

    认识 Splay树,BST(二叉搜索树)的一种,整体效率很高,平摊操作次数为\(O(log_2n)\),也就是说,在一棵有n个节点的BST上做M次Splay操作,时间复杂度为\(O(Mlog_2n)\ ...

  8. ubuntu18.04 源码方式安装wine , 警告,libxrender 64-bit development files not found, XRender won't be supported.

    警告信息: configure: WARNING: libxrender 64-bit development files not found, XRender won't be supported. ...

  9. Ubuntu22.04下安装chrome浏览器

    Ubuntu下Chrome的下载: 地址: https://www.google.cn/intl/zh-CN/chrome/ 下载后的文件: 安装: 命令: sudo dpkg -i google-c ...

  10. Python示例——负数的位运算

    平时在coding的时候虽然会遇到位运算但一般也都是正数的位运算,今天突然见到了使用负数的位运算,对此十分好奇和困惑,为此做了下了解,于是有了此文. 给出一些位运算的例子: 其中,正数的位运算是最为常 ...