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

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

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

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

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

纯定义属性
【文本设定】:字体、标签、值、单位;事件方法: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

发表评论

评论已关闭。

相关文章