(五十二)c#Winform自定义控件-LED数字

用处及效果

准备工作

使用GID+画的,不了解的话请自行百度

开始

添加一个类UCLEDNum ,继承UserControl

将数字拆分为单独的字,然后根据显示位置进行画出来,将显示位置定义为如下所示

/* 显示位置序号
     *  ****1***
     *  *      *  
     *  6      2
     *  *      *
     *  ****7***
     *  *      *
     *  5      3
     *  *      *
     *  ****4***
     */

从上面可以看出,定义了1-7的位置,然后定义一个数字对应的显示列表

private static Dictionary<char, int[]> m_nums = new Dictionary<char, int[]>();
        static UCLEDNum()
        {
            m_nums['0'] = new int[] { 1, 2, 3, 4, 5, 6 };
            m_nums['1'] = new int[] { 2, 3 };
            m_nums['2'] = new int[] { 1, 2, 5, 4, 7 };
            m_nums['3'] = new int[] { 1, 2, 7, 3, 4 };
            m_nums['4'] = new int[] { 2, 3, 6, 7 };
            m_nums['5'] = new int[] { 1, 6, 7, 3, 4 };
            m_nums['6'] = new int[] { 1, 6, 5, 4, 3, 7 };
            m_nums['7'] = new int[] { 1, 2, 3 };
            m_nums['8'] = new int[] { 1, 2, 3, 4, 5, 6, 7 };
            m_nums['9'] = new int[] { 1, 2, 3, 4, 7, 6 };
            m_nums['-'] = new int[] { 7 };
            m_nums[':'] = new int[0];
            m_nums['.'] = new int[0];
        }

你看到了还有“-”,“:”,“.”这3个符号,是为了时间和数字时候使用

然后定义一个矩形区域来用作绘画区域,并且在SizeChanged事件中赋值

Rectangle m_drawRect = Rectangle.Empty;
        void LEDNum_SizeChanged(object sender, EventArgs e)
        {
            m_drawRect = new Rectangle(1, 1, this.Width - 2, this.Height - 2);
        }

然后就是几个属性

private char m_value = '0';

        [Description("值"), Category("自定义")]
        public char Value
        {
            get { return m_value; }
            set
            {
                if (!m_nums.ContainsKey(value))
                {
                    return;
                }
                if (m_value != value)
                {
                    m_value = value;
                    Refresh();
                }
            }
        }

        private int m_lineWidth = 8;

        [Description("线宽度,为了更好的显示效果,请使用偶数"), Category("自定义")]
        public int LineWidth
        {
            get { return m_lineWidth; }
            set
            {
                m_lineWidth = value;
                Refresh();
            }
        }

        [Description("颜色"), Category("自定义")]
        public override System.Drawing.Color ForeColor
        {
            get
            {
                return base.ForeColor;
            }
            set
            {
                base.ForeColor = value;
            }
        }

最重要的重绘

protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.SetGDIHigh();
            if (m_value == '.')
            {
                Rectangle r2 = new Rectangle(m_drawRect.Left + (m_drawRect.Width - m_lineWidth) / 2, m_drawRect.Bottom - m_lineWidth * 2, m_lineWidth, m_lineWidth);
                e.Graphics.FillRectangle(new SolidBrush(ForeColor), r2);
            }
            else if (m_value == ':')
            {
                Rectangle r1 = new Rectangle(m_drawRect.Left + (m_drawRect.Width - m_lineWidth) / 2, m_drawRect.Top + (m_drawRect.Height / 2 - m_lineWidth) / 2, m_lineWidth, m_lineWidth);
                e.Graphics.FillRectangle(new SolidBrush(ForeColor), r1);
                Rectangle r2 = new Rectangle(m_drawRect.Left + (m_drawRect.Width - m_lineWidth) / 2, m_drawRect.Top + (m_drawRect.Height / 2 - m_lineWidth) / 2 + m_drawRect.Height / 2, m_lineWidth, m_lineWidth);
                e.Graphics.FillRectangle(new SolidBrush(ForeColor), r2);
            }
            else
            {
                int[] vs = m_nums[m_value];
                if (vs.Contains(1))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Left + 2, m_drawRect.Top),
                    new Point(m_drawRect.Right - 2, m_drawRect.Top),
                    new Point(m_drawRect.Right - m_lineWidth-2, m_drawRect.Top+m_lineWidth),
                    new Point(m_drawRect.Left + m_lineWidth+2, m_drawRect.Top+m_lineWidth),
                    new Point(m_drawRect.Left + 2, m_drawRect.Top)
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }

                if (vs.Contains(2))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Right, m_drawRect.Top),
                    new Point(m_drawRect.Right, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Right-m_lineWidth/2, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2+m_lineWidth/2),
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Top+m_lineWidth),
                    new Point(m_drawRect.Right, m_drawRect.Top)
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }

                if (vs.Contains(3))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Right, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Right, m_drawRect.Bottom),
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Bottom-m_lineWidth),
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Right-m_lineWidth/2, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2-m_lineWidth/2),
                    new Point(m_drawRect.Right, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),                 
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }

                if (vs.Contains(4))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Left + 2, m_drawRect.Bottom),
                    new Point(m_drawRect.Right - 2, m_drawRect.Bottom),
                    new Point(m_drawRect.Right - m_lineWidth-2, m_drawRect.Bottom-m_lineWidth),
                    new Point(m_drawRect.Left + m_lineWidth+2, m_drawRect.Bottom-m_lineWidth),
                    new Point(m_drawRect.Left + 2, m_drawRect.Bottom)
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }

                if (vs.Contains(5))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Left, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Left, m_drawRect.Bottom),
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Bottom-m_lineWidth),
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Left+m_lineWidth/2, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2-m_lineWidth/2),
                    new Point(m_drawRect.Left, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),                 
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }


                if (vs.Contains(6))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Left, m_drawRect.Top),
                    new Point(m_drawRect.Left, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Left+m_lineWidth/2, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2+m_lineWidth/2),
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Top+m_lineWidth),
                    new Point(m_drawRect.Left, m_drawRect.Top)
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }

                if (vs.Contains(7))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Left+m_lineWidth/2, m_drawRect.Height/2+1),            
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Height/2-m_lineWidth/2+1),    
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Height/2-m_lineWidth/2+1),
                    new Point(m_drawRect.Right-m_lineWidth/2, m_drawRect.Height/2+1),
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Height/2+m_lineWidth/2+1),
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Height/2+m_lineWidth/2+1),    
                    new Point(m_drawRect.Left+m_lineWidth/2, m_drawRect.Height/2+1)
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }
            }
        }

完工,看下完整代码和效果

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.ComponentModel;

namespace HZH_Controls.Controls
{
    /* 显示位置序号
     *  ****1***
     *  *      *  
     *  6      2
     *  *      *
     *  ****7***
     *  *      *
     *  5      3
     *  *      *
     *  ****4***
     */
    public class UCLEDNum : UserControl
    {
        Rectangle m_drawRect = Rectangle.Empty;

        private static Dictionary<char, int[]> m_nums = new Dictionary<char, int[]>();
        static UCLEDNum()
        {
            m_nums['0'] = new int[] { 1, 2, 3, 4, 5, 6 };
            m_nums['1'] = new int[] { 2, 3 };
            m_nums['2'] = new int[] { 1, 2, 5, 4, 7 };
            m_nums['3'] = new int[] { 1, 2, 7, 3, 4 };
            m_nums['4'] = new int[] { 2, 3, 6, 7 };
            m_nums['5'] = new int[] { 1, 6, 7, 3, 4 };
            m_nums['6'] = new int[] { 1, 6, 5, 4, 3, 7 };
            m_nums['7'] = new int[] { 1, 2, 3 };
            m_nums['8'] = new int[] { 1, 2, 3, 4, 5, 6, 7 };
            m_nums['9'] = new int[] { 1, 2, 3, 4, 7, 6 };
            m_nums['-'] = new int[] { 7 };
            m_nums[':'] = new int[0];
            m_nums['.'] = new int[0];
        }


        public UCLEDNum()
        {
            SizeChanged += LEDNum_SizeChanged;
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
            Size = new System.Drawing.Size(40, 70);
            if (m_drawRect == Rectangle.Empty)
                m_drawRect = new Rectangle(1, 1, this.Width - 2, this.Height - 2);
        }

        void LEDNum_SizeChanged(object sender, EventArgs e)
        {
            m_drawRect = new Rectangle(1, 1, this.Width - 2, this.Height - 2);
        }

        private char m_value = '0';

        [Description("值"), Category("自定义")]
        public char Value
        {
            get { return m_value; }
            set
            {
                if (!m_nums.ContainsKey(value))
                {
                    return;
                }
                if (m_value != value)
                {
                    m_value = value;
                    Refresh();
                }
            }
        }

        private int m_lineWidth = 8;

        [Description("线宽度,为了更好的显示效果,请使用偶数"), Category("自定义")]
        public int LineWidth
        {
            get { return m_lineWidth; }
            set
            {
                m_lineWidth = value;
                Refresh();
            }
        }

        [Description("颜色"), Category("自定义")]
        public override System.Drawing.Color ForeColor
        {
            get
            {
                return base.ForeColor;
            }
            set
            {
                base.ForeColor = value;
            }
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.SetGDIHigh();
            if (m_value == '.')
            {
                Rectangle r2 = new Rectangle(m_drawRect.Left + (m_drawRect.Width - m_lineWidth) / 2, m_drawRect.Bottom - m_lineWidth * 2, m_lineWidth, m_lineWidth);
                e.Graphics.FillRectangle(new SolidBrush(ForeColor), r2);
            }
            else if (m_value == ':')
            {
                Rectangle r1 = new Rectangle(m_drawRect.Left + (m_drawRect.Width - m_lineWidth) / 2, m_drawRect.Top + (m_drawRect.Height / 2 - m_lineWidth) / 2, m_lineWidth, m_lineWidth);
                e.Graphics.FillRectangle(new SolidBrush(ForeColor), r1);
                Rectangle r2 = new Rectangle(m_drawRect.Left + (m_drawRect.Width - m_lineWidth) / 2, m_drawRect.Top + (m_drawRect.Height / 2 - m_lineWidth) / 2 + m_drawRect.Height / 2, m_lineWidth, m_lineWidth);
                e.Graphics.FillRectangle(new SolidBrush(ForeColor), r2);
            }
            else
            {
                int[] vs = m_nums[m_value];
                if (vs.Contains(1))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Left + 2, m_drawRect.Top),
                    new Point(m_drawRect.Right - 2, m_drawRect.Top),
                    new Point(m_drawRect.Right - m_lineWidth-2, m_drawRect.Top+m_lineWidth),
                    new Point(m_drawRect.Left + m_lineWidth+2, m_drawRect.Top+m_lineWidth),
                    new Point(m_drawRect.Left + 2, m_drawRect.Top)
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }

                if (vs.Contains(2))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Right, m_drawRect.Top),
                    new Point(m_drawRect.Right, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Right-m_lineWidth/2, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2+m_lineWidth/2),
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Top+m_lineWidth),
                    new Point(m_drawRect.Right, m_drawRect.Top)
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }

                if (vs.Contains(3))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Right, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Right, m_drawRect.Bottom),
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Bottom-m_lineWidth),
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Right-m_lineWidth/2, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2-m_lineWidth/2),
                    new Point(m_drawRect.Right, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),                 
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }

                if (vs.Contains(4))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Left + 2, m_drawRect.Bottom),
                    new Point(m_drawRect.Right - 2, m_drawRect.Bottom),
                    new Point(m_drawRect.Right - m_lineWidth-2, m_drawRect.Bottom-m_lineWidth),
                    new Point(m_drawRect.Left + m_lineWidth+2, m_drawRect.Bottom-m_lineWidth),
                    new Point(m_drawRect.Left + 2, m_drawRect.Bottom)
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }

                if (vs.Contains(5))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Left, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Left, m_drawRect.Bottom),
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Bottom-m_lineWidth),
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Left+m_lineWidth/2, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2-m_lineWidth/2),
                    new Point(m_drawRect.Left, m_drawRect.Bottom-(m_drawRect.Height-m_lineWidth-4)/2),                 
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }


                if (vs.Contains(6))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Left, m_drawRect.Top),
                    new Point(m_drawRect.Left, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Left+m_lineWidth/2, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2+m_lineWidth/2),
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Top+(m_drawRect.Height-m_lineWidth-4)/2),
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Top+m_lineWidth),
                    new Point(m_drawRect.Left, m_drawRect.Top)
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }

                if (vs.Contains(7))
                {
                    GraphicsPath path = new GraphicsPath();
                    path.AddLines(new Point[] 
                {
                    new Point(m_drawRect.Left+m_lineWidth/2, m_drawRect.Height/2+1),            
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Height/2-m_lineWidth/2+1),    
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Height/2-m_lineWidth/2+1),
                    new Point(m_drawRect.Right-m_lineWidth/2, m_drawRect.Height/2+1),
                    new Point(m_drawRect.Right-m_lineWidth, m_drawRect.Height/2+m_lineWidth/2+1),
                    new Point(m_drawRect.Left+m_lineWidth, m_drawRect.Height/2+m_lineWidth/2+1),    
                    new Point(m_drawRect.Left+m_lineWidth/2, m_drawRect.Height/2+1)
                });
                    path.CloseAllFigures();
                    e.Graphics.FillPath(new SolidBrush(ForeColor), path);
                }
            }
        }
    }
}

 以上就是单个字符的了

=======================分割线==========================

下面对数字控件处理

添加一个用户控件UCLEDNums

添加一点属性

private string m_value;

        [Description("值"), Category("自定义")]
        public string Value
        {
            get { return m_value; }
            set
            {
                m_value = value;
                ReloadValue();
            }
        }

        private int m_lineWidth = 8;

        [Description("线宽度,为了更好的显示效果,请使用偶数"), Category("自定义")]
        public int LineWidth
        {
            get { return m_lineWidth; }
            set
            {
                m_lineWidth = value;
                foreach (UCLEDNum c in this.Controls)
                {
                    c.LineWidth = value;
                }
            }
        }

        [Description("颜色"), Category("自定义")]
        public override System.Drawing.Color ForeColor
        {
            get
            {
                return base.ForeColor;
            }
            set
            {
                base.ForeColor = value;
                foreach (UCLEDNum c in this.Controls)
                {
                    c.ForeColor = value;
                }
            }
        }

        public override RightToLeft RightToLeft
        {
            get
            {
                return base.RightToLeft;
            }
            set
            {
                base.RightToLeft = value;
                ReloadValue();
            }
        }
加载控件的函数
private void ReloadValue()
        {
            try
            {
                ControlHelper.FreezeControl(this, true);
                this.Controls.Clear();
                foreach (var item in m_value)
                {
                    UCLEDNum uc = new UCLEDNum();
                    if (RightToLeft == System.Windows.Forms.RightToLeft.Yes)
                        uc.Dock = DockStyle.Right;
                    else
                        uc.Dock = DockStyle.Left;
                    uc.Value = item;
                    uc.ForeColor = ForeColor;
                    uc.LineWidth = m_lineWidth;
                    this.Controls.Add(uc);
                    if (RightToLeft == System.Windows.Forms.RightToLeft.Yes)
                        uc.SendToBack();
                    else
                        uc.BringToFront();
                }
            }
            finally
            {
                ControlHelper.FreezeControl(this, false);
            }
        }

完整代码及效果

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace HZH_Controls.Controls.LED
{
    public partial class UCLEDNums : UserControl
    {
        private string m_value;

        [Description("值"), Category("自定义")]
        public string Value
        {
            get { return m_value; }
            set
            {
                m_value = value;
                ReloadValue();
            }
        }

        private int m_lineWidth = 8;

        [Description("线宽度,为了更好的显示效果,请使用偶数"), Category("自定义")]
        public int LineWidth
        {
            get { return m_lineWidth; }
            set
            {
                m_lineWidth = value;
                foreach (UCLEDNum c in this.Controls)
                {
                    c.LineWidth = value;
                }
            }
        }

        [Description("颜色"), Category("自定义")]
        public override System.Drawing.Color ForeColor
        {
            get
            {
                return base.ForeColor;
            }
            set
            {
                base.ForeColor = value;
                foreach (UCLEDNum c in this.Controls)
                {
                    c.ForeColor = value;
                }
            }
        }

        public override RightToLeft RightToLeft
        {
            get
            {
                return base.RightToLeft;
            }
            set
            {
                base.RightToLeft = value;
                ReloadValue();
            }
        }

        private void ReloadValue()
        {
            try
            {
                ControlHelper.FreezeControl(this, true);
                this.Controls.Clear();
                foreach (var item in m_value)
                {
                    UCLEDNum uc = new UCLEDNum();
                    if (RightToLeft == System.Windows.Forms.RightToLeft.Yes)
                        uc.Dock = DockStyle.Right;
                    else
                        uc.Dock = DockStyle.Left;
                    uc.Value = item;
                    uc.ForeColor = ForeColor;
                    uc.LineWidth = m_lineWidth;
                    this.Controls.Add(uc);
                    if (RightToLeft == System.Windows.Forms.RightToLeft.Yes)
                        uc.SendToBack();
                    else
                        uc.BringToFront();
                }
            }
            finally
            {
                ControlHelper.FreezeControl(this, false);
            }
        }
        public UCLEDNums()
        {
            InitializeComponent();
            Value = "0.00";
        }
    }
}
namespace HZH_Controls.Controls.LED
{
    partial class UCLEDNums
    {
        /// <summary> 
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary> 
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region 组件设计器生成的代码

        /// <summary> 
        /// 设计器支持所需的方法 - 不要
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // UCLEDNums
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Name = "UCLEDNums";
            this.Size = new System.Drawing.Size(150, 58);
            this.ResumeLayout(false);

        }

        #endregion
    }
}

 =======================分割线==========================

下面是日期类控件了,这里偷懒,分成3个控件,分别是日期控件,时间控件,日期时间控件

先说日期控件,

添加一个用户控件UCLEDData

添加属性

private DateTime m_value;

        [Description("值"), Category("自定义")]
        public DateTime Value
        {
            get { return m_value; }
            set
            {
                m_value = value;
                string str = value.ToString("yyyy-MM-dd");
                for (int i = 0; i < str.Length; i++)
                {
                    ((UCLEDNum)this.tableLayoutPanel1.Controls.Find("D" + (i + 1), false)[0]).Value = str[i];
                }
            }
        }

        private int m_lineWidth = 8;

        [Description("线宽度,为了更好的显示效果,请使用偶数"), Category("自定义")]
        public int LineWidth
        {
            get { return m_lineWidth; }
            set
            {
                m_lineWidth = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.LineWidth = value;
                }
            }
        }

        [Description("颜色"), Category("自定义")]
        public override System.Drawing.Color ForeColor
        {
            get
            {
                return base.ForeColor;
            }
            set
            {
                base.ForeColor = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.ForeColor = value;
                }
            }
        }

完整代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace HZH_Controls.Controls
{
    public partial class UCLEDData : UserControl
    {
        private DateTime m_value;

        [Description("值"), Category("自定义")]
        public DateTime Value
        {
            get { return m_value; }
            set
            {
                m_value = value;
                string str = value.ToString("yyyy-MM-dd");
                for (int i = 0; i < str.Length; i++)
                {
                    ((UCLEDNum)this.tableLayoutPanel1.Controls.Find("D" + (i + 1), false)[0]).Value = str[i];
                }
            }
        }

        private int m_lineWidth = 8;

        [Description("线宽度,为了更好的显示效果,请使用偶数"), Category("自定义")]
        public int LineWidth
        {
            get { return m_lineWidth; }
            set
            {
                m_lineWidth = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.LineWidth = value;
                }
            }
        }

        [Description("颜色"), Category("自定义")]
        public override System.Drawing.Color ForeColor
        {
            get
            {
                return base.ForeColor;
            }
            set
            {
                base.ForeColor = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.ForeColor = value;
                }
            }
        }
        public UCLEDData()
        {
            InitializeComponent();
            Value = DateTime.Now;
        }
    }
}
namespace HZH_Controls.Controls
{
    partial class UCLEDData
    {
        /// <summary> 
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary> 
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region 组件设计器生成的代码

        /// <summary> 
        /// 设计器支持所需的方法 - 不要
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
            this.D1 = new HZH_Controls.Controls.UCLEDNum();
            this.D2 = new HZH_Controls.Controls.UCLEDNum();
            this.D3 = new HZH_Controls.Controls.UCLEDNum();
            this.D4 = new HZH_Controls.Controls.UCLEDNum();
            this.D5 = new HZH_Controls.Controls.UCLEDNum();
            this.D6 = new HZH_Controls.Controls.UCLEDNum();
            this.D7 = new HZH_Controls.Controls.UCLEDNum();
            this.D8 = new HZH_Controls.Controls.UCLEDNum();
            this.D9 = new HZH_Controls.Controls.UCLEDNum();
            this.D10 = new HZH_Controls.Controls.UCLEDNum();
            this.tableLayoutPanel1.SuspendLayout();
            this.SuspendLayout();
            // 
            // tableLayoutPanel1
            // 
            this.tableLayoutPanel1.ColumnCount = 10;
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
            this.tableLayoutPanel1.Controls.Add(this.D1, 0, 0);
            this.tableLayoutPanel1.Controls.Add(this.D2, 1, 0);
            this.tableLayoutPanel1.Controls.Add(this.D3, 2, 0);
            this.tableLayoutPanel1.Controls.Add(this.D4, 3, 0);
            this.tableLayoutPanel1.Controls.Add(this.D5, 4, 0);
            this.tableLayoutPanel1.Controls.Add(this.D6, 5, 0);
            this.tableLayoutPanel1.Controls.Add(this.D7, 6, 0);
            this.tableLayoutPanel1.Controls.Add(this.D8, 7, 0);
            this.tableLayoutPanel1.Controls.Add(this.D9, 8, 0);
            this.tableLayoutPanel1.Controls.Add(this.D10, 9, 0);
            this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
            this.tableLayoutPanel1.Name = "tableLayoutPanel1";
            this.tableLayoutPanel1.RowCount = 1;
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
            this.tableLayoutPanel1.Size = new System.Drawing.Size(360, 58);
            this.tableLayoutPanel1.TabIndex = 0;
            // 
            // D1
            // 
            this.D1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D1.LineWidth = 8;
            this.D1.Location = new System.Drawing.Point(3, 3);
            this.D1.Name = "D1";
            this.D1.Size = new System.Drawing.Size(30, 52);
            this.D1.TabIndex = 0;
            this.D1.Value = '2';
            // 
            // D2
            // 
            this.D2.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D2.LineWidth = 8;
            this.D2.Location = new System.Drawing.Point(39, 3);
            this.D2.Name = "D2";
            this.D2.Size = new System.Drawing.Size(30, 52);
            this.D2.TabIndex = 1;
            this.D2.Value = '0';
            // 
            // D3
            // 
            this.D3.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D3.LineWidth = 8;
            this.D3.Location = new System.Drawing.Point(75, 3);
            this.D3.Name = "D3";
            this.D3.Size = new System.Drawing.Size(30, 52);
            this.D3.TabIndex = 2;
            this.D3.Value = '1';
            // 
            // D4
            // 
            this.D4.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D4.LineWidth = 8;
            this.D4.Location = new System.Drawing.Point(111, 3);
            this.D4.Name = "D4";
            this.D4.Size = new System.Drawing.Size(30, 52);
            this.D4.TabIndex = 3;
            this.D4.Value = '9';
            // 
            // D5
            // 
            this.D5.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D5.LineWidth = 8;
            this.D5.Location = new System.Drawing.Point(147, 3);
            this.D5.Name = "D5";
            this.D5.Size = new System.Drawing.Size(30, 52);
            this.D5.TabIndex = 4;
            this.D5.Value = '-';
            // 
            // D6
            // 
            this.D6.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D6.LineWidth = 8;
            this.D6.Location = new System.Drawing.Point(183, 3);
            this.D6.Name = "D6";
            this.D6.Size = new System.Drawing.Size(30, 52);
            this.D6.TabIndex = 5;
            this.D6.Value = '0';
            // 
            // D7
            // 
            this.D7.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D7.LineWidth = 8;
            this.D7.Location = new System.Drawing.Point(219, 3);
            this.D7.Name = "D7";
            this.D7.Size = new System.Drawing.Size(30, 52);
            this.D7.TabIndex = 6;
            this.D7.Value = '8';
            // 
            // D8
            // 
            this.D8.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D8.LineWidth = 8;
            this.D8.Location = new System.Drawing.Point(255, 3);
            this.D8.Name = "D8";
            this.D8.Size = new System.Drawing.Size(30, 52);
            this.D8.TabIndex = 7;
            this.D8.Value = '-';
            // 
            // D9
            // 
            this.D9.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D9.LineWidth = 8;
            this.D9.Location = new System.Drawing.Point(291, 3);
            this.D9.Name = "D9";
            this.D9.Size = new System.Drawing.Size(30, 52);
            this.D9.TabIndex = 8;
            this.D9.Value = '0';
            // 
            // D10
            // 
            this.D10.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D10.LineWidth = 8;
            this.D10.Location = new System.Drawing.Point(327, 3);
            this.D10.Name = "D10";
            this.D10.Size = new System.Drawing.Size(30, 52);
            this.D10.TabIndex = 9;
            this.D10.Value = '1';
            // 
            // UCLEDData
            // 
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
            this.Controls.Add(this.tableLayoutPanel1);
            this.Margin = new System.Windows.Forms.Padding(0);
            this.Name = "UCLEDData";
            this.Size = new System.Drawing.Size(360, 58);
            this.tableLayoutPanel1.ResumeLayout(false);
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
        private UCLEDNum D1;
        private UCLEDNum D2;
        private UCLEDNum D3;
        private UCLEDNum D4;
        private UCLEDNum D5;
        private UCLEDNum D6;
        private UCLEDNum D7;
        private UCLEDNum D8;
        private UCLEDNum D9;
        private UCLEDNum D10;

    }
}

=======================分割线==========================

时间控件

添加一个用户控件UCLEDTime

添加属性

private DateTime m_value;

        [Description("值"), Category("自定义")]
        public DateTime Value
        {
            get { return m_value; }
            set
            {
                m_value = value;
                string str = value.ToString("HH:mm:ss");
                for (int i = 0; i < str.Length; i++)
                {
                    ((UCLEDNum)this.tableLayoutPanel1.Controls.Find("D" + (i + 1), false)[0]).Value = str[i];
                }
            }
        }

        private int m_lineWidth = 8;

        [Description("线宽度,为了更好的显示效果,请使用偶数"), Category("自定义")]
        public int LineWidth
        {
            get { return m_lineWidth; }
            set
            {
                m_lineWidth = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.LineWidth = value;
                }
            }
        }

        [Description("颜色"), Category("自定义")]
        public override System.Drawing.Color ForeColor
        {
            get
            {
                return base.ForeColor;
            }
            set
            {
                base.ForeColor = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.ForeColor = value;
                }
            }
        }
全部代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace HZH_Controls.Controls
{
    public partial class UCLEDTime : UserControl
    {
        private DateTime m_value;

        [Description("值"), Category("自定义")]
        public DateTime Value
        {
            get { return m_value; }
            set
            {
                m_value = value;
                string str = value.ToString("HH:mm:ss");
                for (int i = 0; i < str.Length; i++)
                {
                    ((UCLEDNum)this.tableLayoutPanel1.Controls.Find("D" + (i + 1), false)[0]).Value = str[i];
                }
            }
        }

        private int m_lineWidth = 8;

        [Description("线宽度,为了更好的显示效果,请使用偶数"), Category("自定义")]
        public int LineWidth
        {
            get { return m_lineWidth; }
            set
            {
                m_lineWidth = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.LineWidth = value;
                }
            }
        }

        [Description("颜色"), Category("自定义")]
        public override System.Drawing.Color ForeColor
        {
            get
            {
                return base.ForeColor;
            }
            set
            {
                base.ForeColor = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.ForeColor = value;
                }
            }
        }
        public UCLEDTime()
        {
            InitializeComponent();
            Value = DateTime.Now;
        }
    }
}
namespace HZH_Controls.Controls
{
    partial class UCLEDTime
    {
        /// <summary> 
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary> 
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region 组件设计器生成的代码

        /// <summary> 
        /// 设计器支持所需的方法 - 不要
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
            this.D1 = new HZH_Controls.Controls.UCLEDNum();
            this.D2 = new HZH_Controls.Controls.UCLEDNum();
            this.D3 = new HZH_Controls.Controls.UCLEDNum();
            this.D4 = new HZH_Controls.Controls.UCLEDNum();
            this.D5 = new HZH_Controls.Controls.UCLEDNum();
            this.D6 = new HZH_Controls.Controls.UCLEDNum();
            this.D7 = new HZH_Controls.Controls.UCLEDNum();
            this.D8 = new HZH_Controls.Controls.UCLEDNum();
            this.tableLayoutPanel1.SuspendLayout();
            this.SuspendLayout();
            // 
            // tableLayoutPanel1
            // 
            this.tableLayoutPanel1.ColumnCount = 8;
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 12.5F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 12.5F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 12.5F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 12.5F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 12.5F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 12.5F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 12.5F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 12.5F));
            this.tableLayoutPanel1.Controls.Add(this.D1, 0, 0);
            this.tableLayoutPanel1.Controls.Add(this.D2, 1, 0);
            this.tableLayoutPanel1.Controls.Add(this.D3, 2, 0);
            this.tableLayoutPanel1.Controls.Add(this.D4, 3, 0);
            this.tableLayoutPanel1.Controls.Add(this.D5, 4, 0);
            this.tableLayoutPanel1.Controls.Add(this.D6, 5, 0);
            this.tableLayoutPanel1.Controls.Add(this.D7, 6, 0);
            this.tableLayoutPanel1.Controls.Add(this.D8, 7, 0);
            this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
            this.tableLayoutPanel1.Name = "tableLayoutPanel1";
            this.tableLayoutPanel1.RowCount = 1;
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
            this.tableLayoutPanel1.Size = new System.Drawing.Size(290, 58);
            this.tableLayoutPanel1.TabIndex = 0;
            // 
            // D1
            // 
            this.D1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D1.LineWidth = 8;
            this.D1.Location = new System.Drawing.Point(3, 3);
            this.D1.Name = "D1";
            this.D1.Size = new System.Drawing.Size(30, 52);
            this.D1.TabIndex = 0;
            this.D1.Value = '2';
            // 
            // D2
            // 
            this.D2.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D2.LineWidth = 8;
            this.D2.Location = new System.Drawing.Point(39, 3);
            this.D2.Name = "D2";
            this.D2.Size = new System.Drawing.Size(30, 52);
            this.D2.TabIndex = 1;
            this.D2.Value = '3';
            // 
            // D3
            // 
            this.D3.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D3.LineWidth = 8;
            this.D3.Location = new System.Drawing.Point(75, 3);
            this.D3.Name = "D3";
            this.D3.Size = new System.Drawing.Size(30, 52);
            this.D3.TabIndex = 2;
            this.D3.Value = ':';
            // 
            // D4
            // 
            this.D4.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D4.LineWidth = 8;
            this.D4.Location = new System.Drawing.Point(111, 3);
            this.D4.Name = "D4";
            this.D4.Size = new System.Drawing.Size(30, 52);
            this.D4.TabIndex = 3;
            this.D4.Value = '1';
            // 
            // D5
            // 
            this.D5.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D5.LineWidth = 8;
            this.D5.Location = new System.Drawing.Point(147, 3);
            this.D5.Name = "D5";
            this.D5.Size = new System.Drawing.Size(30, 52);
            this.D5.TabIndex = 4;
            this.D5.Value = '0';
            // 
            // D6
            // 
            this.D6.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D6.LineWidth = 8;
            this.D6.Location = new System.Drawing.Point(183, 3);
            this.D6.Name = "D6";
            this.D6.Size = new System.Drawing.Size(30, 52);
            this.D6.TabIndex = 5;
            this.D6.Value = ':';
            // 
            // D7
            // 
            this.D7.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D7.LineWidth = 8;
            this.D7.Location = new System.Drawing.Point(219, 3);
            this.D7.Name = "D7";
            this.D7.Size = new System.Drawing.Size(30, 52);
            this.D7.TabIndex = 6;
            this.D7.Value = '1';
            // 
            // D8
            // 
            this.D8.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D8.LineWidth = 8;
            this.D8.Location = new System.Drawing.Point(255, 3);
            this.D8.Name = "D8";
            this.D8.Size = new System.Drawing.Size(32, 52);
            this.D8.TabIndex = 7;
            this.D8.Value = '0';
            // 
            // UCLEDTime
            // 
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
            this.Controls.Add(this.tableLayoutPanel1);
            this.Name = "UCLEDTime";
            this.Size = new System.Drawing.Size(290, 58);
            this.tableLayoutPanel1.ResumeLayout(false);
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
        private UCLEDNum D1;
        private UCLEDNum D2;
        private UCLEDNum D3;
        private UCLEDNum D4;
        private UCLEDNum D5;
        private UCLEDNum D6;
        private UCLEDNum D7;
        private UCLEDNum D8;
    }
}

=======================分割线==========================

日期时间控件

添加一个用户控件UCLEDDataTime

添加属性

private DateTime m_value;

        [Description("值"), Category("自定义")]
        public DateTime Value
        {
            get { return m_value; }
            set
            {
                m_value = value;
                string str = value.ToString("yyyy-MM-dd HH:mm:ss");
                for (int i = 0; i < str.Length; i++)
                {
                    if (i == 10)
                        continue;
                    ((UCLEDNum)this.tableLayoutPanel1.Controls.Find("D" + (i + 1), false)[0]).Value = str[i];
                }
            }
        }

        private int m_lineWidth = 8;

        [Description("线宽度,为了更好的显示效果,请使用偶数"), Category("自定义")]
        public int LineWidth
        {
            get { return m_lineWidth; }
            set
            {
                m_lineWidth = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.LineWidth = value;
                }
            }
        }

        [Description("颜色"), Category("自定义")]
        public override System.Drawing.Color ForeColor
        {
            get
            {
                return base.ForeColor;
            }
            set
            {
                base.ForeColor = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.ForeColor = value;
                }
            }
        }

全部代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace HZH_Controls.Controls
{
    public partial class UCLEDDataTime : UserControl
    {
        private DateTime m_value;

        [Description("值"), Category("自定义")]
        public DateTime Value
        {
            get { return m_value; }
            set
            {
                m_value = value;
                string str = value.ToString("yyyy-MM-dd HH:mm:ss");
                for (int i = 0; i < str.Length; i++)
                {
                    if (i == 10)
                        continue;
                    ((UCLEDNum)this.tableLayoutPanel1.Controls.Find("D" + (i + 1), false)[0]).Value = str[i];
                }
            }
        }

        private int m_lineWidth = 8;

        [Description("线宽度,为了更好的显示效果,请使用偶数"), Category("自定义")]
        public int LineWidth
        {
            get { return m_lineWidth; }
            set
            {
                m_lineWidth = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.LineWidth = value;
                }
            }
        }

        [Description("颜色"), Category("自定义")]
        public override System.Drawing.Color ForeColor
        {
            get
            {
                return base.ForeColor;
            }
            set
            {
                base.ForeColor = value;
                foreach (UCLEDNum c in this.tableLayoutPanel1.Controls)
                {
                    c.ForeColor = value;
                }
            }
        }
        public UCLEDDataTime()
        {
            InitializeComponent();
            Value = DateTime.Now;
        }
    }
}
namespace HZH_Controls.Controls
{
    partial class UCLEDDataTime
    {
        /// <summary> 
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary> 
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region 组件设计器生成的代码

        /// <summary> 
        /// 设计器支持所需的方法 - 不要
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
            this.D1 = new HZH_Controls.Controls.UCLEDNum();
            this.D2 = new HZH_Controls.Controls.UCLEDNum();
            this.D3 = new HZH_Controls.Controls.UCLEDNum();
            this.D4 = new HZH_Controls.Controls.UCLEDNum();
            this.D5 = new HZH_Controls.Controls.UCLEDNum();
            this.D6 = new HZH_Controls.Controls.UCLEDNum();
            this.D7 = new HZH_Controls.Controls.UCLEDNum();
            this.D8 = new HZH_Controls.Controls.UCLEDNum();
            this.D9 = new HZH_Controls.Controls.UCLEDNum();
            this.D10 = new HZH_Controls.Controls.UCLEDNum();
            this.D12 = new HZH_Controls.Controls.UCLEDNum();
            this.D13 = new HZH_Controls.Controls.UCLEDNum();
            this.D14 = new HZH_Controls.Controls.UCLEDNum();
            this.D15 = new HZH_Controls.Controls.UCLEDNum();
            this.D16 = new HZH_Controls.Controls.UCLEDNum();
            this.D17 = new HZH_Controls.Controls.UCLEDNum();
            this.D18 = new HZH_Controls.Controls.UCLEDNum();
            this.D19 = new HZH_Controls.Controls.UCLEDNum();
            this.tableLayoutPanel1.SuspendLayout();
            this.SuspendLayout();
            // 
            // tableLayoutPanel1
            // 
            this.tableLayoutPanel1.ColumnCount = 19;
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 5.263158F));
            this.tableLayoutPanel1.Controls.Add(this.D1, 0, 0);
            this.tableLayoutPanel1.Controls.Add(this.D2, 1, 0);
            this.tableLayoutPanel1.Controls.Add(this.D3, 2, 0);
            this.tableLayoutPanel1.Controls.Add(this.D4, 3, 0);
            this.tableLayoutPanel1.Controls.Add(this.D5, 4, 0);
            this.tableLayoutPanel1.Controls.Add(this.D6, 5, 0);
            this.tableLayoutPanel1.Controls.Add(this.D7, 6, 0);
            this.tableLayoutPanel1.Controls.Add(this.D8, 7, 0);
            this.tableLayoutPanel1.Controls.Add(this.D9, 8, 0);
            this.tableLayoutPanel1.Controls.Add(this.D10, 9, 0);
            this.tableLayoutPanel1.Controls.Add(this.D12, 11, 0);
            this.tableLayoutPanel1.Controls.Add(this.D13, 12, 0);
            this.tableLayoutPanel1.Controls.Add(this.D14, 13, 0);
            this.tableLayoutPanel1.Controls.Add(this.D15, 14, 0);
            this.tableLayoutPanel1.Controls.Add(this.D16, 15, 0);
            this.tableLayoutPanel1.Controls.Add(this.D17, 16, 0);
            this.tableLayoutPanel1.Controls.Add(this.D18, 17, 0);
            this.tableLayoutPanel1.Controls.Add(this.D19, 18, 0);
            this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
            this.tableLayoutPanel1.Name = "tableLayoutPanel1";
            this.tableLayoutPanel1.RowCount = 1;
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
            this.tableLayoutPanel1.Size = new System.Drawing.Size(650, 58);
            this.tableLayoutPanel1.TabIndex = 1;
            // 
            // D1
            // 
            this.D1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D1.LineWidth = 8;
            this.D1.Location = new System.Drawing.Point(3, 3);
            this.D1.Name = "D1";
            this.D1.Size = new System.Drawing.Size(28, 52);
            this.D1.TabIndex = 0;
            this.D1.Value = '2';
            // 
            // D2
            // 
            this.D2.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D2.LineWidth = 8;
            this.D2.Location = new System.Drawing.Point(37, 3);
            this.D2.Name = "D2";
            this.D2.Size = new System.Drawing.Size(28, 52);
            this.D2.TabIndex = 1;
            this.D2.Value = '0';
            // 
            // D3
            // 
            this.D3.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D3.LineWidth = 8;
            this.D3.Location = new System.Drawing.Point(71, 3);
            this.D3.Name = "D3";
            this.D3.Size = new System.Drawing.Size(28, 52);
            this.D3.TabIndex = 2;
            this.D3.Value = '1';
            // 
            // D4
            // 
            this.D4.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D4.LineWidth = 8;
            this.D4.Location = new System.Drawing.Point(105, 3);
            this.D4.Name = "D4";
            this.D4.Size = new System.Drawing.Size(28, 52);
            this.D4.TabIndex = 3;
            this.D4.Value = '9';
            // 
            // D5
            // 
            this.D5.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D5.LineWidth = 8;
            this.D5.Location = new System.Drawing.Point(139, 3);
            this.D5.Name = "D5";
            this.D5.Size = new System.Drawing.Size(28, 52);
            this.D5.TabIndex = 4;
            this.D5.Value = '-';
            // 
            // D6
            // 
            this.D6.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D6.LineWidth = 8;
            this.D6.Location = new System.Drawing.Point(173, 3);
            this.D6.Name = "D6";
            this.D6.Size = new System.Drawing.Size(28, 52);
            this.D6.TabIndex = 5;
            this.D6.Value = '0';
            // 
            // D7
            // 
            this.D7.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D7.LineWidth = 8;
            this.D7.Location = new System.Drawing.Point(207, 3);
            this.D7.Name = "D7";
            this.D7.Size = new System.Drawing.Size(28, 52);
            this.D7.TabIndex = 6;
            this.D7.Value = '8';
            // 
            // D8
            // 
            this.D8.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D8.LineWidth = 8;
            this.D8.Location = new System.Drawing.Point(241, 3);
            this.D8.Name = "D8";
            this.D8.Size = new System.Drawing.Size(28, 52);
            this.D8.TabIndex = 7;
            this.D8.Value = '-';
            // 
            // D9
            // 
            this.D9.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D9.LineWidth = 8;
            this.D9.Location = new System.Drawing.Point(275, 3);
            this.D9.Name = "D9";
            this.D9.Size = new System.Drawing.Size(28, 52);
            this.D9.TabIndex = 8;
            this.D9.Value = '0';
            // 
            // D10
            // 
            this.D10.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D10.LineWidth = 8;
            this.D10.Location = new System.Drawing.Point(309, 3);
            this.D10.Name = "D10";
            this.D10.Size = new System.Drawing.Size(28, 52);
            this.D10.TabIndex = 9;
            this.D10.Value = '1';
            // 
            // D12
            // 
            this.D12.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D12.LineWidth = 8;
            this.D12.Location = new System.Drawing.Point(377, 3);
            this.D12.Name = "D12";
            this.D12.Size = new System.Drawing.Size(28, 52);
            this.D12.TabIndex = 10;
            this.D12.Value = '2';
            // 
            // D13
            // 
            this.D13.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D13.LineWidth = 8;
            this.D13.Location = new System.Drawing.Point(411, 3);
            this.D13.Name = "D13";
            this.D13.Size = new System.Drawing.Size(28, 52);
            this.D13.TabIndex = 11;
            this.D13.Value = '3';
            // 
            // D14
            // 
            this.D14.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D14.LineWidth = 8;
            this.D14.Location = new System.Drawing.Point(445, 3);
            this.D14.Name = "D14";
            this.D14.Size = new System.Drawing.Size(28, 52);
            this.D14.TabIndex = 12;
            this.D14.Value = ':';
            // 
            // D15
            // 
            this.D15.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D15.LineWidth = 8;
            this.D15.Location = new System.Drawing.Point(479, 3);
            this.D15.Name = "D15";
            this.D15.Size = new System.Drawing.Size(28, 52);
            this.D15.TabIndex = 13;
            this.D15.Value = '0';
            // 
            // D16
            // 
            this.D16.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D16.LineWidth = 8;
            this.D16.Location = new System.Drawing.Point(513, 3);
            this.D16.Name = "D16";
            this.D16.Size = new System.Drawing.Size(28, 52);
            this.D16.TabIndex = 14;
            this.D16.Value = '1';
            // 
            // D17
            // 
            this.D17.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D17.LineWidth = 8;
            this.D17.Location = new System.Drawing.Point(547, 3);
            this.D17.Name = "D17";
            this.D17.Size = new System.Drawing.Size(28, 52);
            this.D17.TabIndex = 15;
            this.D17.Value = ':';
            // 
            // D18
            // 
            this.D18.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D18.LineWidth = 8;
            this.D18.Location = new System.Drawing.Point(581, 3);
            this.D18.Name = "D18";
            this.D18.Size = new System.Drawing.Size(28, 52);
            this.D18.TabIndex = 16;
            this.D18.Value = '5';
            // 
            // D19
            // 
            this.D19.Dock = System.Windows.Forms.DockStyle.Fill;
            this.D19.LineWidth = 8;
            this.D19.Location = new System.Drawing.Point(615, 3);
            this.D19.Name = "D19";
            this.D19.Size = new System.Drawing.Size(32, 52);
            this.D19.TabIndex = 17;
            this.D19.Value = '3';
            // 
            // UCLEDDataTime
            // 
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
            this.Controls.Add(this.tableLayoutPanel1);
            this.Name = "UCLEDDataTime";
            this.Size = new System.Drawing.Size(650, 58);
            this.tableLayoutPanel1.ResumeLayout(false);
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
        private UCLEDNum D1;
        private UCLEDNum D2;
        private UCLEDNum D3;
        private UCLEDNum D4;
        private UCLEDNum D5;
        private UCLEDNum D6;
        private UCLEDNum D7;
        private UCLEDNum D8;
        private UCLEDNum D9;
        private UCLEDNum D10;
        private UCLEDNum D12;
        private UCLEDNum D13;
        private UCLEDNum D14;
        private UCLEDNum D15;
        private UCLEDNum D16;
        private UCLEDNum D17;
        private UCLEDNum D18;
        private UCLEDNum D19;
    }
}

最后的话

如果你喜欢的话,请到 https://gitee.com/kwwwvagaa/net_winform_custom_control 点个星星吧

作者:冰封一夏
出处: http://www.hzhcontrols.com/doc.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,
且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
GitHub:https://github.com/kwwwvagaa/NetWinformControl
码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git

原文出处:冰封一夏

原文链接:https://www.cnblogs.com/bfyx/p/11447261.html

本文观点不代表Dotnet9立场,转载请联系原作者。

发表评论

登录后才能评论