当前位置: 移动技术网 > IT编程>开发语言>.net > (五十二)c#Winform自定义控件-LED数字

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

2019年09月02日  | 移动技术网IT编程  | 我要评论

伤城之恋国语全集,买多网晨舞,sea-242

前提

入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。

github:https://github.com/kwwwvagaa/netwinformcontrol

码云:

如果觉得写的还行,请点个 star 支持一下吧

欢迎前来交流探讨: 企鹅群568015492 

麻烦博客下方点个【推荐】,谢谢

nuget

install-package hzh_controls

目录

用处及效果

准备工作

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

开始

添加一个类uclednum ,继承usercontrol

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

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

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

 1  private static dictionary<char, int[]> m_nums = new dictionary<char, int[]>();
 2         static uclednum()
 3         {
 4             m_nums['0'] = new int[] { 1, 2, 3, 4, 5, 6 };
 5             m_nums['1'] = new int[] { 2, 3 };
 6             m_nums['2'] = new int[] { 1, 2, 5, 4, 7 };
 7             m_nums['3'] = new int[] { 1, 2, 7, 3, 4 };
 8             m_nums['4'] = new int[] { 2, 3, 6, 7 };
 9             m_nums['5'] = new int[] { 1, 6, 7, 3, 4 };
10             m_nums['6'] = new int[] { 1, 6, 5, 4, 3, 7 };
11             m_nums['7'] = new int[] { 1, 2, 3 };
12             m_nums['8'] = new int[] { 1, 2, 3, 4, 5, 6, 7 };
13             m_nums['9'] = new int[] { 1, 2, 3, 4, 7, 6 };
14             m_nums['-'] = new int[] { 7 };
15             m_nums[':'] = new int[0];
16             m_nums['.'] = new int[0];
17         }

你看到了还有“-”,“:”,“.”这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);
        }

然后就是几个属性

 1   private char m_value = '0';
 2 
 3         [description("值"), category("自定义")]
 4         public char value
 5         {
 6             get { return m_value; }
 7             set
 8             {
 9                 if (!m_nums.containskey(value))
10                 {
11                     return;
12                 }
13                 if (m_value != value)
14                 {
15                     m_value = value;
16                     refresh();
17                 }
18             }
19         }
20 
21         private int m_linewidth = 8;
22 
23         [description("线宽度,为了更好的显示效果,请使用偶数"), category("自定义")]
24         public int linewidth
25         {
26             get { return m_linewidth; }
27             set
28             {
29                 m_linewidth = value;
30                 refresh();
31             }
32         }
33 
34         [description("颜色"), category("自定义")]
35         public override system.drawing.color forecolor
36         {
37             get
38             {
39                 return base.forecolor;
40             }
41             set
42             {
43                 base.forecolor = value;
44             }
45         }

最重要的重绘

  1 protected override void onpaint(painteventargs e)
  2         {
  3             base.onpaint(e);
  4             e.graphics.setgdihigh();
  5             if (m_value == '.')
  6             {
  7                 rectangle r2 = new rectangle(m_drawrect.left + (m_drawrect.width - m_linewidth) / 2, m_drawrect.bottom - m_linewidth * 2, m_linewidth, m_linewidth);
  8                 e.graphics.fillrectangle(new solidbrush(forecolor), r2);
  9             }
 10             else if (m_value == ':')
 11             {
 12                 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);
 13                 e.graphics.fillrectangle(new solidbrush(forecolor), r1);
 14                 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);
 15                 e.graphics.fillrectangle(new solidbrush(forecolor), r2);
 16             }
 17             else
 18             {
 19                 int[] vs = m_nums[m_value];
 20                 if (vs.contains(1))
 21                 {
 22                     graphicspath path = new graphicspath();
 23                     path.addlines(new point[] 
 24                 {
 25                     new point(m_drawrect.left + 2, m_drawrect.top),
 26                     new point(m_drawrect.right - 2, m_drawrect.top),
 27                     new point(m_drawrect.right - m_linewidth-2, m_drawrect.top+m_linewidth),
 28                     new point(m_drawrect.left + m_linewidth+2, m_drawrect.top+m_linewidth),
 29                     new point(m_drawrect.left + 2, m_drawrect.top)
 30                 });
 31                     path.closeallfigures();
 32                     e.graphics.fillpath(new solidbrush(forecolor), path);
 33                 }
 34 
 35                 if (vs.contains(2))
 36                 {
 37                     graphicspath path = new graphicspath();
 38                     path.addlines(new point[] 
 39                 {
 40                     new point(m_drawrect.right, m_drawrect.top),
 41                     new point(m_drawrect.right, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2),
 42                     new point(m_drawrect.right-m_linewidth/2, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2+m_linewidth/2),
 43                     new point(m_drawrect.right-m_linewidth, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2),
 44                     new point(m_drawrect.right-m_linewidth, m_drawrect.top+m_linewidth),
 45                     new point(m_drawrect.right, m_drawrect.top)
 46                 });
 47                     path.closeallfigures();
 48                     e.graphics.fillpath(new solidbrush(forecolor), path);
 49                 }
 50 
 51                 if (vs.contains(3))
 52                 {
 53                     graphicspath path = new graphicspath();
 54                     path.addlines(new point[] 
 55                 {
 56                     new point(m_drawrect.right, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),
 57                     new point(m_drawrect.right, m_drawrect.bottom),
 58                     new point(m_drawrect.right-m_linewidth, m_drawrect.bottom-m_linewidth),
 59                     new point(m_drawrect.right-m_linewidth, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),
 60                     new point(m_drawrect.right-m_linewidth/2, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2-m_linewidth/2),
 61                     new point(m_drawrect.right, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),                 
 62                 });
 63                     path.closeallfigures();
 64                     e.graphics.fillpath(new solidbrush(forecolor), path);
 65                 }
 66 
 67                 if (vs.contains(4))
 68                 {
 69                     graphicspath path = new graphicspath();
 70                     path.addlines(new point[] 
 71                 {
 72                     new point(m_drawrect.left + 2, m_drawrect.bottom),
 73                     new point(m_drawrect.right - 2, m_drawrect.bottom),
 74                     new point(m_drawrect.right - m_linewidth-2, m_drawrect.bottom-m_linewidth),
 75                     new point(m_drawrect.left + m_linewidth+2, m_drawrect.bottom-m_linewidth),
 76                     new point(m_drawrect.left + 2, m_drawrect.bottom)
 77                 });
 78                     path.closeallfigures();
 79                     e.graphics.fillpath(new solidbrush(forecolor), path);
 80                 }
 81 
 82                 if (vs.contains(5))
 83                 {
 84                     graphicspath path = new graphicspath();
 85                     path.addlines(new point[] 
 86                 {
 87                     new point(m_drawrect.left, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),
 88                     new point(m_drawrect.left, m_drawrect.bottom),
 89                     new point(m_drawrect.left+m_linewidth, m_drawrect.bottom-m_linewidth),
 90                     new point(m_drawrect.left+m_linewidth, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),
 91                     new point(m_drawrect.left+m_linewidth/2, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2-m_linewidth/2),
 92                     new point(m_drawrect.left, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),                 
 93                 });
 94                     path.closeallfigures();
 95                     e.graphics.fillpath(new solidbrush(forecolor), path);
 96                 }
 97 
 98 
 99                 if (vs.contains(6))
100                 {
101                     graphicspath path = new graphicspath();
102                     path.addlines(new point[] 
103                 {
104                     new point(m_drawrect.left, m_drawrect.top),
105                     new point(m_drawrect.left, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2),
106                     new point(m_drawrect.left+m_linewidth/2, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2+m_linewidth/2),
107                     new point(m_drawrect.left+m_linewidth, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2),
108                     new point(m_drawrect.left+m_linewidth, m_drawrect.top+m_linewidth),
109                     new point(m_drawrect.left, m_drawrect.top)
110                 });
111                     path.closeallfigures();
112                     e.graphics.fillpath(new solidbrush(forecolor), path);
113                 }
114 
115                 if (vs.contains(7))
116                 {
117                     graphicspath path = new graphicspath();
118                     path.addlines(new point[] 
119                 {
120                     new point(m_drawrect.left+m_linewidth/2, m_drawrect.height/2+1),            
121                     new point(m_drawrect.left+m_linewidth, m_drawrect.height/2-m_linewidth/2+1),    
122                     new point(m_drawrect.right-m_linewidth, m_drawrect.height/2-m_linewidth/2+1),
123                     new point(m_drawrect.right-m_linewidth/2, m_drawrect.height/2+1),
124                     new point(m_drawrect.right-m_linewidth, m_drawrect.height/2+m_linewidth/2+1),
125                     new point(m_drawrect.left+m_linewidth, m_drawrect.height/2+m_linewidth/2+1),    
126                     new point(m_drawrect.left+m_linewidth/2, m_drawrect.height/2+1)
127                 });
128                     path.closeallfigures();
129                     e.graphics.fillpath(new solidbrush(forecolor), path);
130                 }
131             }
132         }

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

  1 using system;
  2 using system.collections.generic;
  3 using system.linq;
  4 using system.text;
  5 using system.windows.forms;
  6 using system.drawing;
  7 using system.drawing.drawing2d;
  8 using system.componentmodel;
  9 
 10 namespace hzh_controls.controls
 11 {
 12     /* 显示位置序号
 13      *  ****1***
 14      *  *      *  
 15      *  6      2
 16      *  *      *
 17      *  ****7***
 18      *  *      *
 19      *  5      3
 20      *  *      *
 21      *  ****4***
 22      */
 23     public class uclednum : usercontrol
 24     {
 25         rectangle m_drawrect = rectangle.empty;
 26 
 27         private static dictionary<char, int[]> m_nums = new dictionary<char, int[]>();
 28         static uclednum()
 29         {
 30             m_nums['0'] = new int[] { 1, 2, 3, 4, 5, 6 };
 31             m_nums['1'] = new int[] { 2, 3 };
 32             m_nums['2'] = new int[] { 1, 2, 5, 4, 7 };
 33             m_nums['3'] = new int[] { 1, 2, 7, 3, 4 };
 34             m_nums['4'] = new int[] { 2, 3, 6, 7 };
 35             m_nums['5'] = new int[] { 1, 6, 7, 3, 4 };
 36             m_nums['6'] = new int[] { 1, 6, 5, 4, 3, 7 };
 37             m_nums['7'] = new int[] { 1, 2, 3 };
 38             m_nums['8'] = new int[] { 1, 2, 3, 4, 5, 6, 7 };
 39             m_nums['9'] = new int[] { 1, 2, 3, 4, 7, 6 };
 40             m_nums['-'] = new int[] { 7 };
 41             m_nums[':'] = new int[0];
 42             m_nums['.'] = new int[0];
 43         }
 44 
 45 
 46         public uclednum()
 47         {
 48             sizechanged += lednum_sizechanged;
 49             this.autoscalemode = system.windows.forms.autoscalemode.none;
 50             size = new system.drawing.size(40, 70);
 51             if (m_drawrect == rectangle.empty)
 52                 m_drawrect = new rectangle(1, 1, this.width - 2, this.height - 2);
 53         }
 54 
 55         void lednum_sizechanged(object sender, eventargs e)
 56         {
 57             m_drawrect = new rectangle(1, 1, this.width - 2, this.height - 2);
 58         }
 59 
 60         private char m_value = '0';
 61 
 62         [description("值"), category("自定义")]
 63         public char value
 64         {
 65             get { return m_value; }
 66             set
 67             {
 68                 if (!m_nums.containskey(value))
 69                 {
 70                     return;
 71                 }
 72                 if (m_value != value)
 73                 {
 74                     m_value = value;
 75                     refresh();
 76                 }
 77             }
 78         }
 79 
 80         private int m_linewidth = 8;
 81 
 82         [description("线宽度,为了更好的显示效果,请使用偶数"), category("自定义")]
 83         public int linewidth
 84         {
 85             get { return m_linewidth; }
 86             set
 87             {
 88                 m_linewidth = value;
 89                 refresh();
 90             }
 91         }
 92 
 93         [description("颜色"), category("自定义")]
 94         public override system.drawing.color forecolor
 95         {
 96             get
 97             {
 98                 return base.forecolor;
 99             }
100             set
101             {
102                 base.forecolor = value;
103             }
104         }
105 
106         protected override void onpaint(painteventargs e)
107         {
108             base.onpaint(e);
109             e.graphics.setgdihigh();
110             if (m_value == '.')
111             {
112                 rectangle r2 = new rectangle(m_drawrect.left + (m_drawrect.width - m_linewidth) / 2, m_drawrect.bottom - m_linewidth * 2, m_linewidth, m_linewidth);
113                 e.graphics.fillrectangle(new solidbrush(forecolor), r2);
114             }
115             else if (m_value == ':')
116             {
117                 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);
118                 e.graphics.fillrectangle(new solidbrush(forecolor), r1);
119                 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);
120                 e.graphics.fillrectangle(new solidbrush(forecolor), r2);
121             }
122             else
123             {
124                 int[] vs = m_nums[m_value];
125                 if (vs.contains(1))
126                 {
127                     graphicspath path = new graphicspath();
128                     path.addlines(new point[] 
129                 {
130                     new point(m_drawrect.left + 2, m_drawrect.top),
131                     new point(m_drawrect.right - 2, m_drawrect.top),
132                     new point(m_drawrect.right - m_linewidth-2, m_drawrect.top+m_linewidth),
133                     new point(m_drawrect.left + m_linewidth+2, m_drawrect.top+m_linewidth),
134                     new point(m_drawrect.left + 2, m_drawrect.top)
135                 });
136                     path.closeallfigures();
137                     e.graphics.fillpath(new solidbrush(forecolor), path);
138                 }
139 
140                 if (vs.contains(2))
141                 {
142                     graphicspath path = new graphicspath();
143                     path.addlines(new point[] 
144                 {
145                     new point(m_drawrect.right, m_drawrect.top),
146                     new point(m_drawrect.right, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2),
147                     new point(m_drawrect.right-m_linewidth/2, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2+m_linewidth/2),
148                     new point(m_drawrect.right-m_linewidth, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2),
149                     new point(m_drawrect.right-m_linewidth, m_drawrect.top+m_linewidth),
150                     new point(m_drawrect.right, m_drawrect.top)
151                 });
152                     path.closeallfigures();
153                     e.graphics.fillpath(new solidbrush(forecolor), path);
154                 }
155 
156                 if (vs.contains(3))
157                 {
158                     graphicspath path = new graphicspath();
159                     path.addlines(new point[] 
160                 {
161                     new point(m_drawrect.right, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),
162                     new point(m_drawrect.right, m_drawrect.bottom),
163                     new point(m_drawrect.right-m_linewidth, m_drawrect.bottom-m_linewidth),
164                     new point(m_drawrect.right-m_linewidth, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),
165                     new point(m_drawrect.right-m_linewidth/2, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2-m_linewidth/2),
166                     new point(m_drawrect.right, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),                 
167                 });
168                     path.closeallfigures();
169                     e.graphics.fillpath(new solidbrush(forecolor), path);
170                 }
171 
172                 if (vs.contains(4))
173                 {
174                     graphicspath path = new graphicspath();
175                     path.addlines(new point[] 
176                 {
177                     new point(m_drawrect.left + 2, m_drawrect.bottom),
178                     new point(m_drawrect.right - 2, m_drawrect.bottom),
179                     new point(m_drawrect.right - m_linewidth-2, m_drawrect.bottom-m_linewidth),
180                     new point(m_drawrect.left + m_linewidth+2, m_drawrect.bottom-m_linewidth),
181                     new point(m_drawrect.left + 2, m_drawrect.bottom)
182                 });
183                     path.closeallfigures();
184                     e.graphics.fillpath(new solidbrush(forecolor), path);
185                 }
186 
187                 if (vs.contains(5))
188                 {
189                     graphicspath path = new graphicspath();
190                     path.addlines(new point[] 
191                 {
192                     new point(m_drawrect.left, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),
193                     new point(m_drawrect.left, m_drawrect.bottom),
194                     new point(m_drawrect.left+m_linewidth, m_drawrect.bottom-m_linewidth),
195                     new point(m_drawrect.left+m_linewidth, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),
196                     new point(m_drawrect.left+m_linewidth/2, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2-m_linewidth/2),
197                     new point(m_drawrect.left, m_drawrect.bottom-(m_drawrect.height-m_linewidth-4)/2),                 
198                 });
199                     path.closeallfigures();
200                     e.graphics.fillpath(new solidbrush(forecolor), path);
201                 }
202 
203 
204                 if (vs.contains(6))
205                 {
206                     graphicspath path = new graphicspath();
207                     path.addlines(new point[] 
208                 {
209                     new point(m_drawrect.left, m_drawrect.top),
210                     new point(m_drawrect.left, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2),
211                     new point(m_drawrect.left+m_linewidth/2, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2+m_linewidth/2),
212                     new point(m_drawrect.left+m_linewidth, m_drawrect.top+(m_drawrect.height-m_linewidth-4)/2),
213                     new point(m_drawrect.left+m_linewidth, m_drawrect.top+m_linewidth),
214                     new point(m_drawrect.left, m_drawrect.top)
215                 });
216                     path.closeallfigures();
217                     e.graphics.fillpath(new solidbrush(forecolor), path);
218                 }
219 
220                 if (vs.contains(7))
221                 {
222                     graphicspath path = new graphicspath();
223                     path.addlines(new point[] 
224                 {
225                     new point(m_drawrect.left+m_linewidth/2, m_drawrect.height/2+1),            
226                     new point(m_drawrect.left+m_linewidth, m_drawrect.height/2-m_linewidth/2+1),    
227                     new point(m_drawrect.right-m_linewidth, m_drawrect.height/2-m_linewidth/2+1),
228                     new point(m_drawrect.right-m_linewidth/2, m_drawrect.height/2+1),
229                     new point(m_drawrect.right-m_linewidth, m_drawrect.height/2+m_linewidth/2+1),
230                     new point(m_drawrect.left+m_linewidth, m_drawrect.height/2+m_linewidth/2+1),    
231                     new point(m_drawrect.left+m_linewidth/2, m_drawrect.height/2+1)
232                 });
233                     path.closeallfigures();
234                     e.graphics.fillpath(new solidbrush(forecolor), path);
235                 }
236             }
237         }
238     }
239 }

 

 

 以上就是单个字符的了

 

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

下面对数字控件处理

添加一个用户控件uclednums

添加一点属性

 1 private string m_value;
 2 
 3         [description("值"), category("自定义")]
 4         public string value
 5         {
 6             get { return m_value; }
 7             set
 8             {
 9                 m_value = value;
10                 reloadvalue();
11             }
12         }
13 
14         private int m_linewidth = 8;
15 
16         [description("线宽度,为了更好的显示效果,请使用偶数"), category("自定义")]
17         public int linewidth
18         {
19             get { return m_linewidth; }
20             set
21             {
22                 m_linewidth = value;
23                 foreach (uclednum c in this.controls)
24                 {
25                     c.linewidth = value;
26                 }
27             }
28         }
29 
30         [description("颜色"), category("自定义")]
31         public override system.drawing.color forecolor
32         {
33             get
34             {
35                 return base.forecolor;
36             }
37             set
38             {
39                 base.forecolor = value;
40                 foreach (uclednum c in this.controls)
41                 {
42                     c.forecolor = value;
43                 }
44             }
45         }
46 
47         public override righttoleft righttoleft
48         {
49             get
50             {
51                 return base.righttoleft;
52             }
53             set
54             {
55                 base.righttoleft = value;
56                 reloadvalue();
57             }
58         }

加载控件的函数

 1  private void reloadvalue()
 2         {
 3             try
 4             {
 5                 controlhelper.freezecontrol(this, true);
 6                 this.controls.clear();
 7                 foreach (var item in m_value)
 8                 {
 9                     uclednum uc = new uclednum();
10                     if (righttoleft == system.windows.forms.righttoleft.yes)
11                         uc.dock = dockstyle.right;
12                     else
13                         uc.dock = dockstyle.left;
14                     uc.value = item;
15                     uc.forecolor = forecolor;
16                     uc.linewidth = m_linewidth;
17                     this.controls.add(uc);
18                     if (righttoleft == system.windows.forms.righttoleft.yes)
19                         uc.sendtoback();
20                     else
21                         uc.bringtofront();
22                 }
23             }
24             finally
25             {
26                 controlhelper.freezecontrol(this, false);
27             }
28         }

完整代码及效果

  1 using system;
  2 using system.collections.generic;
  3 using system.componentmodel;
  4 using system.drawing;
  5 using system.data;
  6 using system.linq;
  7 using system.text;
  8 using system.windows.forms;
  9 
 10 namespace hzh_controls.controls.led
 11 {
 12     public partial class uclednums : usercontrol
 13     {
 14         private string m_value;
 15 
 16         [description("值"), category("自定义")]
 17         public string value
 18         {
 19             get { return m_value; }
 20             set
 21             {
 22                 m_value = value;
 23                 reloadvalue();
 24             }
 25         }
 26 
 27         private int m_linewidth = 8;
 28 
 29         [description("线宽度,为了更好的显示效果,请使用偶数"), category("自定义")]
 30         public int linewidth
 31         {
 32             get { return m_linewidth; }
 33             set
 34             {
 35                 m_linewidth = value;
 36                 foreach (uclednum c in this.controls)
 37                 {
 38                     c.linewidth = value;
 39                 }
 40             }
 41         }
 42 
 43         [description("颜色"), category("自定义")]
 44         public override system.drawing.color forecolor
 45         {
 46             get
 47             {
 48                 return base.forecolor;
 49             }
 50             set
 51             {
 52                 base.forecolor = value;
 53                 foreach (uclednum c in this.controls)
 54                 {
 55                     c.forecolor = value;
 56                 }
 57             }
 58         }
 59 
 60         public override righttoleft righttoleft
 61         {
 62             get
 63             {
 64                 return base.righttoleft;
 65             }
 66             set
 67             {
 68                 base.righttoleft = value;
 69                 reloadvalue();
 70             }
 71         }
 72 
 73         private void reloadvalue()
 74         {
 75             try
 76             {
 77                 controlhelper.freezecontrol(this, true);
 78                 this.controls.clear();
 79                 foreach (var item in m_value)
 80                 {
 81                     uclednum uc = new uclednum();
 82                     if (righttoleft == system.windows.forms.righttoleft.yes)
 83                         uc.dock = dockstyle.right;
 84                     else
 85                         uc.dock = dockstyle.left;
 86                     uc.value = item;
 87                     uc.forecolor = forecolor;
 88                     uc.linewidth = m_linewidth;
 89                     this.controls.add(uc);
 90                     if (righttoleft == system.windows.forms.righttoleft.yes)
 91                         uc.sendtoback();
 92                     else
 93                         uc.bringtofront();
 94                 }
 95             }
 96             finally
 97             {
 98                 controlhelper.freezecontrol(this, false);
 99             }
100         }
101         public uclednums()
102         {
103             initializecomponent();
104             value = "0.00";
105         }
106     }
107 }
 1 namespace hzh_controls.controls.led
 2 {
 3     partial class uclednums
 4     {
 5         /// <summary> 
 6         /// 必需的设计器变量。
 7         /// </summary>
 8         private system.componentmodel.icontainer components = null;
 9 
10         /// <summary> 
11         /// 清理所有正在使用的资源。
12         /// </summary>
13         /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
14         protected override void dispose(bool disposing)
15         {
16             if (disposing && (components != null))
17             {
18                 components.dispose();
19             }
20             base.dispose(disposing);
21         }
22 
23         #region 组件设计器生成的代码
24 
25         /// <summary> 
26         /// 设计器支持所需的方法 - 不要
27         /// 使用代码编辑器修改此方法的内容。
28         /// </summary>
29         private void initializecomponent()
30         {
31             this.suspendlayout();
32             // 
33             // uclednums
34             // 
35             this.autoscaledimensions = new system.drawing.sizef(6f, 12f);
36             this.autoscalemode = system.windows.forms.autoscalemode.font;
37             this.name = "uclednums";
38             this.size = new system.drawing.size(150, 58);
39             this.resumelayout(false);
40 
41         }
42 
43         #endregion
44     }
45 }

 

 

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

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

先说日期控件,

添加一个用户控件ucleddata

添加属性

 1 private datetime m_value;
 2 
 3         [description("值"), category("自定义")]
 4         public datetime value
 5         {
 6             get { return m_value; }
 7             set
 8             {
 9                 m_value = value;
10                 string str = value.tostring("yyyy-mm-dd");
11                 for (int i = 0; i < str.length; i++)
12                 {
13                     ((uclednum)this.tablelayoutpanel1.controls.find("d" + (i + 1), false)[0]).value = str[i];
14                 }
15             }
16         }
17 
18         private int m_linewidth = 8;
19 
20         [description("线宽度,为了更好的显示效果,请使用偶数"), category("自定义")]
21         public int linewidth
22         {
23             get { return m_linewidth; }
24             set
25             {
26                 m_linewidth = value;
27                 foreach (uclednum c in this.tablelayoutpanel1.controls)
28                 {
29                     c.linewidth = value;
30                 }
31             }
32         }
33 
34         [description("颜色"), category("自定义")]
35         public override system.drawing.color forecolor
36         {
37             get
38             {
39                 return base.forecolor;
40             }
41             set
42             {
43                 base.forecolor = value;
44                 foreach (uclednum c in this.tablelayoutpanel1.controls)
45                 {
46                     c.forecolor = value;
47                 }
48             }
49         }

完整代码

 1 using system;
 2 using system.collections.generic;
 3 using system.componentmodel;
 4 using system.drawing;
 5 using system.data;
 6 using system.linq;
 7 using system.text;
 8 using system.windows.forms;
 9 
10 namespace hzh_controls.controls
11 {
12     public partial class ucleddata : usercontrol
13     {
14         private datetime m_value;
15 
16         [description("值"), category("自定义")]
17         public datetime value
18         {
19             get { return m_value; }
20             set
21             {
22                 m_value = value;
23                 string str = value.tostring("yyyy-mm-dd");
24                 for (int i = 0; i < str.length; i++)
25                 {
26                     ((uclednum)this.tablelayoutpanel1.controls.find("d" + (i + 1), false)[0]).value = str[i];
27                 }
28             }
29         }
30 
31         private int m_linewidth = 8;
32 
33         [description("线宽度,为了更好的显示效果,请使用偶数"), category("自定义")]
34         public int linewidth
35         {
36             get { return m_linewidth; }
37             set
38             {
39                 m_linewidth = value;
40                 foreach (uclednum c in this.tablelayoutpanel1.controls)
41                 {
42                     c.linewidth = value;
43                 }
44             }
45         }
46 
47         [description("颜色"), category("自定义")]
48         public override system.drawing.color forecolor
49         {
50             get
51             {
52                 return base.forecolor;
53             }
54             set
55             {
56                 base.forecolor = value;
57                 foreach (uclednum c in this.tablelayoutpanel1.controls)
58                 {
59                     c.forecolor = value;
60                 }
61             }
62         }
63         public ucleddata()
64         {
65             initializecomponent();
66             value = datetime.now;
67         }
68     }
69 }
  1 namespace hzh_controls.controls
  2 {
  3     partial class ucleddata
  4     {
  5         /// <summary> 
  6         /// 必需的设计器变量。
  7         /// </summary>
  8         private system.componentmodel.icontainer components = null;
  9 
 10         /// <summary> 
 11         /// 清理所有正在使用的资源。
 12         /// </summary>
 13         /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 14         protected override void dispose(bool disposing)
 15         {
 16             if (disposing && (components != null))
 17             {
 18                 components.dispose();
 19             }
 20             base.dispose(disposing);
 21         }
 22 
 23         #region 组件设计器生成的代码
 24 
 25         /// <summary> 
 26         /// 设计器支持所需的方法 - 不要
 27         /// 使用代码编辑器修改此方法的内容。
 28         /// </summary>
 29         private void initializecomponent()
 30         {
 31             this.tablelayoutpanel1 = new system.windows.forms.tablelayoutpanel();
 32             this.d1 = new hzh_controls.controls.uclednum();
 33             this.d2 = new hzh_controls.controls.uclednum();
 34             this.d3 = new hzh_controls.controls.uclednum();
 35             this.d4 = new hzh_controls.controls.uclednum();
 36             this.d5 = new hzh_controls.controls.uclednum();
 37             this.d6 = new hzh_controls.controls.uclednum();
 38             this.d7 = new hzh_controls.controls.uclednum();
 39             this.d8 = new hzh_controls.controls.uclednum();
 40             this.d9 = new hzh_controls.controls.uclednum();
 41             this.d10 = new hzh_controls.controls.uclednum();
 42             this.tablelayoutpanel1.suspendlayout();
 43             this.suspendlayout();
 44             // 
 45             // tablelayoutpanel1
 46             // 
 47             this.tablelayoutpanel1.columncount = 10;
 48             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 10f));
 49             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 10f));
 50             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 10f));
 51             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 10f));
 52             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 10f));
 53             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 10f));
 54             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 10f));
 55             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 10f));
 56             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 10f));
 57             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 10f));
 58             this.tablelayoutpanel1.controls.add(this.d1, 0, 0);
 59             this.tablelayoutpanel1.controls.add(this.d2, 1, 0);
 60             this.tablelayoutpanel1.controls.add(this.d3, 2, 0);
 61             this.tablelayoutpanel1.controls.add(this.d4, 3, 0);
 62             this.tablelayoutpanel1.controls.add(this.d5, 4, 0);
 63             this.tablelayoutpanel1.controls.add(this.d6, 5, 0);
 64             this.tablelayoutpanel1.controls.add(this.d7, 6, 0);
 65             this.tablelayoutpanel1.controls.add(this.d8, 7, 0);
 66             this.tablelayoutpanel1.controls.add(this.d9, 8, 0);
 67             this.tablelayoutpanel1.controls.add(this.d10, 9, 0);
 68             this.tablelayoutpanel1.dock = system.windows.forms.dockstyle.fill;
 69             this.tablelayoutpanel1.location = new system.drawing.point(0, 0);
 70             this.tablelayoutpanel1.name = "tablelayoutpanel1";
 71             this.tablelayoutpanel1.rowcount = 1;
 72             this.tablelayoutpanel1.rowstyles.add(new system.windows.forms.rowstyle(system.windows.forms.sizetype.percent, 100f));
 73             this.tablelayoutpanel1.rowstyles.add(new system.windows.forms.rowstyle(system.windows.forms.sizetype.absolute, 20f));
 74             this.tablelayoutpanel1.size = new system.drawing.size(360, 58);
 75             this.tablelayoutpanel1.tabindex = 0;
 76             // 
 77             // d1
 78             // 
 79             this.d1.dock = system.windows.forms.dockstyle.fill;
 80             this.d1.linewidth = 8;
 81             this.d1.location = new system.drawing.point(3, 3);
 82             this.d1.name = "d1";
 83             this.d1.size = new system.drawing.size(30, 52);
 84             this.d1.tabindex = 0;
 85             this.d1.value = '2';
 86             // 
 87             // d2
 88             // 
 89             this.d2.dock = system.windows.forms.dockstyle.fill;
 90             this.d2.linewidth = 8;
 91             this.d2.location = new system.drawing.point(39, 3);
 92             this.d2.name = "d2";
 93             this.d2.size = new system.drawing.size(30, 52);
 94             this.d2.tabindex = 1;
 95             this.d2.value = '0';
 96             // 
 97             // d3
 98             // 
 99             this.d3.dock = system.windows.forms.dockstyle.fill;
100             this.d3.linewidth = 8;
101             this.d3.location = new system.drawing.point(75, 3);
102             this.d3.name = "d3";
103             this.d3.size = new system.drawing.size(30, 52);
104             this.d3.tabindex = 2;
105             this.d3.value = '1';
106             // 
107             // d4
108             // 
109             this.d4.dock = system.windows.forms.dockstyle.fill;
110             this.d4.linewidth = 8;
111             this.d4.location = new system.drawing.point(111, 3);
112             this.d4.name = "d4";
113             this.d4.size = new system.drawing.size(30, 52);
114             this.d4.tabindex = 3;
115             this.d4.value = '9';
116             // 
117             // d5
118             // 
119             this.d5.dock = system.windows.forms.dockstyle.fill;
120             this.d5.linewidth = 8;
121             this.d5.location = new system.drawing.point(147, 3);
122             this.d5.name = "d5";
123             this.d5.size = new system.drawing.size(30, 52);
124             this.d5.tabindex = 4;
125             this.d5.value = '-';
126             // 
127             // d6
128             // 
129             this.d6.dock = system.windows.forms.dockstyle.fill;
130             this.d6.linewidth = 8;
131             this.d6.location = new system.drawing.point(183, 3);
132             this.d6.name = "d6";
133             this.d6.size = new system.drawing.size(30, 52);
134             this.d6.tabindex = 5;
135             this.d6.value = '0';
136             // 
137             // d7
138             // 
139             this.d7.dock = system.windows.forms.dockstyle.fill;
140             this.d7.linewidth = 8;
141             this.d7.location = new system.drawing.point(219, 3);
142             this.d7.name = "d7";
143             this.d7.size = new system.drawing.size(30, 52);
144             this.d7.tabindex = 6;
145             this.d7.value = '8';
146             // 
147             // d8
148             // 
149             this.d8.dock = system.windows.forms.dockstyle.fill;
150             this.d8.linewidth = 8;
151             this.d8.location = new system.drawing.point(255, 3);
152             this.d8.name = "d8";
153             this.d8.size = new system.drawing.size(30, 52);
154             this.d8.tabindex = 7;
155             this.d8.value = '-';
156             // 
157             // d9
158             // 
159             this.d9.dock = system.windows.forms.dockstyle.fill;
160             this.d9.linewidth = 8;
161             this.d9.location = new system.drawing.point(291, 3);
162             this.d9.name = "d9";
163             this.d9.size = new system.drawing.size(30, 52);
164             this.d9.tabindex = 8;
165             this.d9.value = '0';
166             // 
167             // d10
168             // 
169             this.d10.dock = system.windows.forms.dockstyle.fill;
170             this.d10.linewidth = 8;
171             this.d10.location = new system.drawing.point(327, 3);
172             this.d10.name = "d10";
173             this.d10.size = new system.drawing.size(30, 52);
174             this.d10.tabindex = 9;
175             this.d10.value = '1';
176             // 
177             // ucleddata
178             // 
179             this.autoscalemode = system.windows.forms.autoscalemode.none;
180             this.controls.add(this.tablelayoutpanel1);
181             this.margin = new system.windows.forms.padding(0);
182             this.name = "ucleddata";
183             this.size = new system.drawing.size(360, 58);
184             this.tablelayoutpanel1.resumelayout(false);
185             this.resumelayout(false);
186 
187         }
188 
189         #endregion
190 
191         private system.windows.forms.tablelayoutpanel tablelayoutpanel1;
192         private uclednum d1;
193         private uclednum d2;
194         private uclednum d3;
195         private uclednum d4;
196         private uclednum d5;
197         private uclednum d6;
198         private uclednum d7;
199         private uclednum d8;
200         private uclednum d9;
201         private uclednum d10;
202 
203     }
204 }

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

时间控件

添加一个用户控件ucledtime

添加属性

 1  private datetime m_value;
 2 
 3         [description("值"), category("自定义")]
 4         public datetime value
 5         {
 6             get { return m_value; }
 7             set
 8             {
 9                 m_value = value;
10                 string str = value.tostring("hh:mm:ss");
11                 for (int i = 0; i < str.length; i++)
12                 {
13                     ((uclednum)this.tablelayoutpanel1.controls.find("d" + (i + 1), false)[0]).value = str[i];
14                 }
15             }
16         }
17 
18         private int m_linewidth = 8;
19 
20         [description("线宽度,为了更好的显示效果,请使用偶数"), category("自定义")]
21         public int linewidth
22         {
23             get { return m_linewidth; }
24             set
25             {
26                 m_linewidth = value;
27                 foreach (uclednum c in this.tablelayoutpanel1.controls)
28                 {
29                     c.linewidth = value;
30                 }
31             }
32         }
33 
34         [description("颜色"), category("自定义")]
35         public override system.drawing.color forecolor
36         {
37             get
38             {
39                 return base.forecolor;
40             }
41             set
42             {
43                 base.forecolor = value;
44                 foreach (uclednum c in this.tablelayoutpanel1.controls)
45                 {
46                     c.forecolor = value;
47                 }
48             }
49         }

全部代码

 1 using system;
 2 using system.collections.generic;
 3 using system.componentmodel;
 4 using system.drawing;
 5 using system.data;
 6 using system.linq;
 7 using system.text;
 8 using system.windows.forms;
 9 
10 namespace hzh_controls.controls
11 {
12     public partial class ucledtime : usercontrol
13     {
14         private datetime m_value;
15 
16         [description("值"), category("自定义")]
17         public datetime value
18         {
19             get { return m_value; }
20             set
21             {
22                 m_value = value;
23                 string str = value.tostring("hh:mm:ss");
24                 for (int i = 0; i < str.length; i++)
25                 {
26                     ((uclednum)this.tablelayoutpanel1.controls.find("d" + (i + 1), false)[0]).value = str[i];
27                 }
28             }
29         }
30 
31         private int m_linewidth = 8;
32 
33         [description("线宽度,为了更好的显示效果,请使用偶数"), category("自定义")]
34         public int linewidth
35         {
36             get { return m_linewidth; }
37             set
38             {
39                 m_linewidth = value;
40                 foreach (uclednum c in this.tablelayoutpanel1.controls)
41                 {
42                     c.linewidth = value;
43                 }
44             }
45         }
46 
47         [description("颜色"), category("自定义")]
48         public override system.drawing.color forecolor
49         {
50             get
51             {
52                 return base.forecolor;
53             }
54             set
55             {
56                 base.forecolor = value;
57                 foreach (uclednum c in this.tablelayoutpanel1.controls)
58                 {
59                     c.forecolor = value;
60                 }
61             }
62         }
63         public ucledtime()
64         {
65             initializecomponent();
66             value = datetime.now;
67         }
68     }
69 }
  1 namespace hzh_controls.controls
  2 {
  3     partial class ucledtime
  4     {
  5         /// <summary> 
  6         /// 必需的设计器变量。
  7         /// </summary>
  8         private system.componentmodel.icontainer components = null;
  9 
 10         /// <summary> 
 11         /// 清理所有正在使用的资源。
 12         /// </summary>
 13         /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 14         protected override void dispose(bool disposing)
 15         {
 16             if (disposing && (components != null))
 17             {
 18                 components.dispose();
 19             }
 20             base.dispose(disposing);
 21         }
 22 
 23         #region 组件设计器生成的代码
 24 
 25         /// <summary> 
 26         /// 设计器支持所需的方法 - 不要
 27         /// 使用代码编辑器修改此方法的内容。
 28         /// </summary>
 29         private void initializecomponent()
 30         {
 31             this.tablelayoutpanel1 = new system.windows.forms.tablelayoutpanel();
 32             this.d1 = new hzh_controls.controls.uclednum();
 33             this.d2 = new hzh_controls.controls.uclednum();
 34             this.d3 = new hzh_controls.controls.uclednum();
 35             this.d4 = new hzh_controls.controls.uclednum();
 36             this.d5 = new hzh_controls.controls.uclednum();
 37             this.d6 = new hzh_controls.controls.uclednum();
 38             this.d7 = new hzh_controls.controls.uclednum();
 39             this.d8 = new hzh_controls.controls.uclednum();
 40             this.tablelayoutpanel1.suspendlayout();
 41             this.suspendlayout();
 42             // 
 43             // tablelayoutpanel1
 44             // 
 45             this.tablelayoutpanel1.columncount = 8;
 46             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 12.5f));
 47             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 12.5f));
 48             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 12.5f));
 49             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 12.5f));
 50             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 12.5f));
 51             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 12.5f));
 52             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 12.5f));
 53             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 12.5f));
 54             this.tablelayoutpanel1.controls.add(this.d1, 0, 0);
 55             this.tablelayoutpanel1.controls.add(this.d2, 1, 0);
 56             this.tablelayoutpanel1.controls.add(this.d3, 2, 0);
 57             this.tablelayoutpanel1.controls.add(this.d4, 3, 0);
 58             this.tablelayoutpanel1.controls.add(this.d5, 4, 0);
 59             this.tablelayoutpanel1.controls.add(this.d6, 5, 0);
 60             this.tablelayoutpanel1.controls.add(this.d7, 6, 0);
 61             this.tablelayoutpanel1.controls.add(this.d8, 7, 0);
 62             this.tablelayoutpanel1.dock = system.windows.forms.dockstyle.fill;
 63             this.tablelayoutpanel1.location = new system.drawing.point(0, 0);
 64             this.tablelayoutpanel1.name = "tablelayoutpanel1";
 65             this.tablelayoutpanel1.rowcount = 1;
 66             this.tablelayoutpanel1.rowstyles.add(new system.windows.forms.rowstyle(system.windows.forms.sizetype.percent, 100f));
 67             this.tablelayoutpanel1.size = new system.drawing.size(290, 58);
 68             this.tablelayoutpanel1.tabindex = 0;
 69             // 
 70             // d1
 71             // 
 72             this.d1.dock = system.windows.forms.dockstyle.fill;
 73             this.d1.linewidth = 8;
 74             this.d1.location = new system.drawing.point(3, 3);
 75             this.d1.name = "d1";
 76             this.d1.size = new system.drawing.size(30, 52);
 77             this.d1.tabindex = 0;
 78             this.d1.value = '2';
 79             // 
 80             // d2
 81             // 
 82             this.d2.dock = system.windows.forms.dockstyle.fill;
 83             this.d2.linewidth = 8;
 84             this.d2.location = new system.drawing.point(39, 3);
 85             this.d2.name = "d2";
 86             this.d2.size = new system.drawing.size(30, 52);
 87             this.d2.tabindex = 1;
 88             this.d2.value = '3';
 89             // 
 90             // d3
 91             // 
 92             this.d3.dock = system.windows.forms.dockstyle.fill;
 93             this.d3.linewidth = 8;
 94             this.d3.location = new system.drawing.point(75, 3);
 95             this.d3.name = "d3";
 96             this.d3.size = new system.drawing.size(30, 52);
 97             this.d3.tabindex = 2;
 98             this.d3.value = ':';
 99             // 
100             // d4
101             // 
102             this.d4.dock = system.windows.forms.dockstyle.fill;
103             this.d4.linewidth = 8;
104             this.d4.location = new system.drawing.point(111, 3);
105             this.d4.name = "d4";
106             this.d4.size = new system.drawing.size(30, 52);
107             this.d4.tabindex = 3;
108             this.d4.value = '1';
109             // 
110             // d5
111             // 
112             this.d5.dock = system.windows.forms.dockstyle.fill;
113             this.d5.linewidth = 8;
114             this.d5.location = new system.drawing.point(147, 3);
115             this.d5.name = "d5";
116             this.d5.size = new system.drawing.size(30, 52);
117             this.d5.tabindex = 4;
118             this.d5.value = '0';
119             // 
120             // d6
121             // 
122             this.d6.dock = system.windows.forms.dockstyle.fill;
123             this.d6.linewidth = 8;
124             this.d6.location = new system.drawing.point(183, 3);
125             this.d6.name = "d6";
126             this.d6.size = new system.drawing.size(30, 52);
127             this.d6.tabindex = 5;
128             this.d6.value = ':';
129             // 
130             // d7
131             // 
132             this.d7.dock = system.windows.forms.dockstyle.fill;
133             this.d7.linewidth = 8;
134             this.d7.location = new system.drawing.point(219, 3);
135             this.d7.name = "d7";
136             this.d7.size = new system.drawing.size(30, 52);
137             this.d7.tabindex = 6;
138             this.d7.value = '1';
139             // 
140             // d8
141             // 
142             this.d8.dock = system.windows.forms.dockstyle.fill;
143             this.d8.linewidth = 8;
144             this.d8.location = new system.drawing.point(255, 3);
145             this.d8.name = "d8";
146             this.d8.size = new system.drawing.size(32, 52);
147             this.d8.tabindex = 7;
148             this.d8.value = '0';
149             // 
150             // ucledtime
151             // 
152             this.autoscalemode = system.windows.forms.autoscalemode.none;
153             this.controls.add(this.tablelayoutpanel1);
154             this.name = "ucledtime";
155             this.size = new system.drawing.size(290, 58);
156             this.tablelayoutpanel1.resumelayout(false);
157             this.resumelayout(false);
158 
159         }
160 
161         #endregion
162 
163         private system.windows.forms.tablelayoutpanel tablelayoutpanel1;
164         private uclednum d1;
165         private uclednum d2;
166         private uclednum d3;
167         private uclednum d4;
168         private uclednum d5;
169         private uclednum d6;
170         private uclednum d7;
171         private uclednum d8;
172     }
173 }

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

日期时间控件

添加一个用户控件ucleddatatime

添加属性

 1  private datetime m_value;
 2 
 3         [description("值"), category("自定义")]
 4         public datetime value
 5         {
 6             get { return m_value; }
 7             set
 8             {
 9                 m_value = value;
10                 string str = value.tostring("yyyy-mm-dd hh:mm:ss");
11                 for (int i = 0; i < str.length; i++)
12                 {
13                     if (i == 10)
14                         continue;
15                     ((uclednum)this.tablelayoutpanel1.controls.find("d" + (i + 1), false)[0]).value = str[i];
16                 }
17             }
18         }
19 
20         private int m_linewidth = 8;
21 
22         [description("线宽度,为了更好的显示效果,请使用偶数"), category("自定义")]
23         public int linewidth
24         {
25             get { return m_linewidth; }
26             set
27             {
28                 m_linewidth = value;
29                 foreach (uclednum c in this.tablelayoutpanel1.controls)
30                 {
31                     c.linewidth = value;
32                 }
33             }
34         }
35 
36         [description("颜色"), category("自定义")]
37         public override system.drawing.color forecolor
38         {
39             get
40             {
41                 return base.forecolor;
42             }
43             set
44             {
45                 base.forecolor = value;
46                 foreach (uclednum c in this.tablelayoutpanel1.controls)
47                 {
48                     c.forecolor = value;
49                 }
50             }
51         }

全部代码

 1 using system;
 2 using system.collections.generic;
 3 using system.componentmodel;
 4 using system.drawing;
 5 using system.data;
 6 using system.linq;
 7 using system.text;
 8 using system.windows.forms;
 9 
10 namespace hzh_controls.controls
11 {
12     public partial class ucleddatatime : usercontrol
13     {
14         private datetime m_value;
15 
16         [description("值"), category("自定义")]
17         public datetime value
18         {
19             get { return m_value; }
20             set
21             {
22                 m_value = value;
23                 string str = value.tostring("yyyy-mm-dd hh:mm:ss");
24                 for (int i = 0; i < str.length; i++)
25                 {
26                     if (i == 10)
27                         continue;
28                     ((uclednum)this.tablelayoutpanel1.controls.find("d" + (i + 1), false)[0]).value = str[i];
29                 }
30             }
31         }
32 
33         private int m_linewidth = 8;
34 
35         [description("线宽度,为了更好的显示效果,请使用偶数"), category("自定义")]
36         public int linewidth
37         {
38             get { return m_linewidth; }
39             set
40             {
41                 m_linewidth = value;
42                 foreach (uclednum c in this.tablelayoutpanel1.controls)
43                 {
44                     c.linewidth = value;
45                 }
46             }
47         }
48 
49         [description("颜色"), category("自定义")]
50         public override system.drawing.color forecolor
51         {
52             get
53             {
54                 return base.forecolor;
55             }
56             set
57             {
58                 base.forecolor = value;
59                 foreach (uclednum c in this.tablelayoutpanel1.controls)
60                 {
61                     c.forecolor = value;
62                 }
63             }
64         }
65         public ucleddatatime()
66         {
67             initializecomponent();
68             value = datetime.now;
69         }
70     }
71 }
  1 namespace hzh_controls.controls
  2 {
  3     partial class ucleddatatime
  4     {
  5         /// <summary> 
  6         /// 必需的设计器变量。
  7         /// </summary>
  8         private system.componentmodel.icontainer components = null;
  9 
 10         /// <summary> 
 11         /// 清理所有正在使用的资源。
 12         /// </summary>
 13         /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 14         protected override void dispose(bool disposing)
 15         {
 16             if (disposing && (components != null))
 17             {
 18                 components.dispose();
 19             }
 20             base.dispose(disposing);
 21         }
 22 
 23         #region 组件设计器生成的代码
 24 
 25         /// <summary> 
 26         /// 设计器支持所需的方法 - 不要
 27         /// 使用代码编辑器修改此方法的内容。
 28         /// </summary>
 29         private void initializecomponent()
 30         {
 31             this.tablelayoutpanel1 = new system.windows.forms.tablelayoutpanel();
 32             this.d1 = new hzh_controls.controls.uclednum();
 33             this.d2 = new hzh_controls.controls.uclednum();
 34             this.d3 = new hzh_controls.controls.uclednum();
 35             this.d4 = new hzh_controls.controls.uclednum();
 36             this.d5 = new hzh_controls.controls.uclednum();
 37             this.d6 = new hzh_controls.controls.uclednum();
 38             this.d7 = new hzh_controls.controls.uclednum();
 39             this.d8 = new hzh_controls.controls.uclednum();
 40             this.d9 = new hzh_controls.controls.uclednum();
 41             this.d10 = new hzh_controls.controls.uclednum();
 42             this.d12 = new hzh_controls.controls.uclednum();
 43             this.d13 = new hzh_controls.controls.uclednum();
 44             this.d14 = new hzh_controls.controls.uclednum();
 45             this.d15 = new hzh_controls.controls.uclednum();
 46             this.d16 = new hzh_controls.controls.uclednum();
 47             this.d17 = new hzh_controls.controls.uclednum();
 48             this.d18 = new hzh_controls.controls.uclednum();
 49             this.d19 = new hzh_controls.controls.uclednum();
 50             this.tablelayoutpanel1.suspendlayout();
 51             this.suspendlayout();
 52             // 
 53             // tablelayoutpanel1
 54             // 
 55             this.tablelayoutpanel1.columncount = 19;
 56             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 57             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 58             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 59             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 60             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 61             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 62             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 63             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 64             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 65             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 66             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 67             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 68             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 69             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 70             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 71             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 72             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 73             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 74             this.tablelayoutpanel1.columnstyles.add(new system.windows.forms.columnstyle(system.windows.forms.sizetype.percent, 5.263158f));
 75             this.tablelayoutpanel1.controls.add(this.d1, 0, 0);
 76             this.tablelayoutpanel1.controls.add(this.d2, 1, 0);
 77             this.tablelayoutpanel1.controls.add(this.d3, 2, 0);
 78             this.tablelayoutpanel1.controls.add(this.d4, 3, 0);
 79             this.tablelayoutpanel1.controls.add(this.d5, 4, 0);
 80             this.tablelayoutpanel1.controls.add(this.d6, 5, 0);
 81             this.tablelayoutpanel1.controls.add(this.d7, 6, 0);
 82             this.tablelayoutpanel1.controls.add(this.d8, 7, 0);
 83             this.tablelayoutpanel1.controls.add(this.d9, 8, 0);
 84             this.tablelayoutpanel1.controls.add(this.d10, 9, 0);
 85             this.tablelayoutpanel1.controls.add(this.d12, 11, 0);
 86             this.tablelayoutpanel1.controls.add(this.d13, 12, 0);
 87             this.tablelayoutpanel1.controls.add(this.d14, 13, 0);
 88             this.tablelayoutpanel1.controls.add(this.d15, 14, 0);
 89             this.tablelayoutpanel1.controls.add(this.d16, 15, 0);
 90             this.tablelayoutpanel1.controls.add(this.d17, 16, 0);
 91             this.tablelayoutpanel1.controls.add(this.d18, 17, 0);
 92             this.tablelayoutpanel1.controls.add(this.d19, 18, 0);
 93             this.tablelayoutpanel1.dock = system.windows.forms.dockstyle.fill;
 94             this.tablelayoutpanel1.location = new system.drawing.point(0, 0);
 95             this.tablelayoutpanel1.name = "tablelayoutpanel1";
 96             this.tablelayoutpanel1.rowcount = 1;
 97             this.tablelayoutpanel1.rowstyles.add(new system.windows.forms.rowstyle(system.windows.forms.sizetype.percent, 100f));
 98             this.tablelayoutpanel1.size = new system.drawing.size(650, 58);
 99             this.tablelayoutpanel1.tabindex = 1;
100             // 
101             // d1
102             // 
103             this.d1.dock = system.windows.forms.dockstyle.fill;
104             this.d1.linewidth = 8;
105             this.d1.location = new system.drawing.point(3, 3);
106             this.d1.name = "d1";
107             this.d1.size = new system.drawing.size(28, 52);
108             this.d1.tabindex = 0;
109             this.d1.value = '2';
110             // 
111             // d2
112             // 
113             this.d2.dock = system.windows.forms.dockstyle.fill;
114             this.d2.linewidth = 8;
115             this.d2.location = new system.drawing.point(37, 3);
116             this.d2.name = "d2";
117             this.d2.size = new system.drawing.size(28, 52);
118             this.d2.tabindex = 1;
119             this.d2.value = '0';
120             // 
121             // d3
122             // 
123             this.d3.dock = system.windows.forms.dockstyle.fill;
124             this.d3.linewidth = 8;
125             this.d3.location = new system.drawing.point(71, 3);
126             this.d3.name = "d3";
127             this.d3.size = new system.drawing.size(28, 52);
128             this.d3.tabindex = 2;
129             this.d3.value = '1';
130             // 
131             // d4
132             // 
133             this.d4.dock = system.windows.forms.dockstyle.fill;
134             this.d4.linewidth = 8;
135             this.d4.location = new system.drawing.point(105, 3);
136             this.d4.name = "d4";
137             this.d4.size = new system.drawing.size(28, 52);
138             this.d4.tabindex = 3;
139             this.d4.value = '9';
140             // 
141             // d5
142             // 
143             this.d5.dock = system.windows.forms.dockstyle.fill;
144             this.d5.linewidth = 8;
145             this.d5.location = new system.drawing.point(139, 3);
146             this.d5.name = "d5";
147             this.d5.size = new system.drawing.size(28, 52);
148             this.d5.tabindex = 4;
149             this.d5.value = '-';
150             // 
151             // d6
152             // 
153             this.d6.dock = system.windows.forms.dockstyle.fill;
154             this.d6.linewidth = 8;
155             this.d6.location = new system.drawing.point(173, 3);
156             this.d6.name = "d6";
157             this.d6.size = new system.drawing.size(28, 52);
158             this.d6.tabindex = 5;
159             this.d6.value = '0';
160             // 
161             // d7
162             // 
163             this.d7.dock = system.windows.forms.dockstyle.fill;
164             this.d7.linewidth = 8;
165             this.d7.location = new system.drawing.point(207, 3);
166             this.d7.name = "d7";
167             this.d7.size = new system.drawing.size(28, 52);
168             this.d7.tabindex = 6;
169             this.d7.value = '8';
170             // 
171             // d8
172             // 
173             this.d8.dock = system.windows.forms.dockstyle.fill;
174             this.d8.linewidth = 8;
175             this.d8.location = new system.drawing.point(241, 3);
176             this.d8.name = "d8";
177             this.d8.size = new system.drawing.size(28, 52);
178             this.d8.tabindex = 7;
179             this.d8.value = '-';
180             // 
181             // d9
182             // 
183             this.d9.dock = system.windows.forms.dockstyle.fill;
184             this.d9.linewidth = 8;
185             this.d9.location = new system.drawing.point(275, 3);
186             this.d9.name = "d9";
187             this.d9.size = new system.drawing.size(28, 52);
188             this.d9.tabindex = 8;
189             this.d9.value = '0';
190             // 
191             // d10
192             // 
193             this.d10.dock = system.windows.forms.dockstyle.fill;
194             this.d10.linewidth = 8;
195             this.d10.location = new system.drawing.point(309, 3);
196             this.d10.name = "d10";
197             this.d10.size = new system.drawing.size(28, 52);
198             this.d10.tabindex = 9;
199             this.d10.value = '1';
200             // 
201             // d12
202             // 
203             this.d12.dock = system.windows.forms.dockstyle.fill;
204             this.d12.linewidth = 8;
205             this.d12.location = new system.drawing.point(377, 3);
206             this.d12.name = "d12";
207             this.d12.size = new system.drawing.size(28, 52);
208             this.d12.tabindex = 10;
209             this.d12.value = '2';
210             // 
211             // d13
212             // 
213             this.d13.dock = system.windows.forms.dockstyle.fill;
214             this.d13.linewidth = 8;
215             this.d13.location = new system.drawing.point(411, 3);
216             this.d13.name = "d13";
217             this.d13.size = new system.drawing.size(28, 52);
218             this.d13.tabindex = 11;
219             this.d13.value = '3';
220             // 
221             // d14
222             // 
223             this.d14.dock = system.windows.forms.dockstyle.fill;
224             this.d14.linewidth = 8;
225             this.d14.location = new system.drawing.point(445, 3);
226             this.d14.name = "d14";
227             this.d14.size = new system.drawing.size(28, 52);
228             this.d14.tabindex = 12;
229             this.d14.value = ':';
230             // 
231             // d15
232             // 
233             this.d15.dock = system.windows.forms.dockstyle.fill;
234             this.d15.linewidth = 8;
235             this.d15.location = new system.drawing.point(479, 3);
236             this.d15.name = "d15";
237             this.d15.size = new system.drawing.size(28, 52);
238             this.d15.tabindex = 13;
239             this.d15.value = '0';
240             // 
241             // d16
242             // 
243             this.d16.dock = system.windows.forms.dockstyle.fill;
244             this.d16.linewidth = 8;
245             this.d16.location = new system.drawing.point(513, 3);
246             this.d16.name = "d16";
247             this.d16.size = new system.drawing.size(28, 52);
248             this.d16.tabindex = 14;
249             this.d16.value = '1';
250             // 
251             // d17
252             // 
253             this.d17.dock = system.windows.forms.dockstyle.fill;
254             this.d17.linewidth = 8;
255             this.d17.location = new system.drawing.point(547, 3);
256             this.d17.name = "d17";
257             this.d17.size = new system.drawing.size(28, 52);
258             this.d17.tabindex = 15;
259             this.d17.value = ':';
260             // 
261             // d18
262             // 
263             this.d18.dock = system.windows.forms.dockstyle.fill;
264             this.d18.linewidth = 8;
265             this.d18.location = new system.drawing.point(581, 3);
266             this.d18.name = "d18";
267             this.d18.size = new system.drawing.size(28, 52);
268             this.d18.tabindex = 16;
269             this.d18.value = '5';
270             // 
271             // d19
272             // 
273             this.d19.dock = system.windows.forms.dockstyle.fill;
274             this.d19.linewidth = 8;
275             this.d19.location = new system.drawing.point(615, 3);
276             this.d19.name = "d19";
277             this.d19.size = new system.drawing.size(32, 52);
278             this.d19.tabindex = 17;
279             this.d19.value = '3';
280             // 
281             // ucleddatatime
282             // 
283             this.autoscalemode = system.windows.forms.autoscalemode.none;
284             this.controls.add(this.tablelayoutpanel1);
285             this.name = "ucleddatatime";
286             this.size = new system.drawing.size(650, 58);
287             this.tablelayoutpanel1.resumelayout(false);
288             this.resumelayout(false);
289 
290         }
291 
292         #endregion
293 
294         private system.windows.forms.tablelayoutpanel tablelayoutpanel1;
295         private uclednum d1;
296         private uclednum d2;
297         private uclednum d3;
298         private uclednum d4;
299         private uclednum d5;
300         private uclednum d6;
301         private uclednum d7;
302         private uclednum d8;
303         private uclednum d9;
304         private uclednum d10;
305         private uclednum d12;
306         private uclednum d13;
307         private uclednum d14;
308         private uclednum d15;
309         private uclednum d16;
310         private uclednum d17;
311         private uclednum d18;
312         private uclednum d19;
313     }
314 }

 

最后的话

如果你喜欢的话,请到  点个星星吧

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网