1. 电子时钟控件
开发一个具有电子时钟功能的ActiveX控件,该自定义控件还提供用于获取或设置时间的属性。
(1)在VS.NET 2008中选择“文件”|“新建”|“项目”命令,在打开的“新建项目”对话框中选择左边方框中的“Visual C#”项,在右边的方框中选择“Windows窗体控件库”(而不能选择其他项);
(2)为使在其他宿主程序中显示具有特定意义的控件名,我们需要将类名更改为“MyAccutronControl”,这涉及到三个地方的修改:
(3)双击节点“UserControl1.cs”,打开自定义控件的设计界面,添加一个Label控件和Timer组件 ,并进行设置:
结果控件的设计界面如下:
(4)为开发的控件编写代码。其中,先在MyAccutronControl类中声明三个成员变量:
private int hour = 0; //作小时计数器
private int minute = 0; //分钟计数器
private int second = 0; //秒计数器
(5)然后在Timer组件的Tick事件处理函数中编写实现hour、minute和second之间计数关系的代码: private void timer1_Tick(object sender, EventArgs e) { string hs,ms,ss,timeStr; hs = ms = ""; second++; if (second == 60) { second = 0; minute++; if (minute == 60) { minute = 0; hour++; if (hour == 24) hour = 0; } } hs = hour.ToString(); if (hs.Length == 1) hs = "0" + hs; //保证以两个字符显示分钟数 ms = minute.ToString(); if (ms.Length == 1) ms = "0" + ms; //保证以两个字符显示分钟数 ss = second.ToString(); if (ss.Length == 1) ss = "0" + ss; //保证以两个字符显示秒数 timeStr = hs + ":" + ms + ":" + ss; label1.Text = timeStr; }
为了让宿主程序能够对时间的各种成份(小时、分、秒)进行设置,还分别定义三种属性: public int hours //获取或设置小时数的属性 { get { return hour; } set { hour = value; } } public int minutes //获取或设置分钟数的属性 { get { return minute; } set { minute = value; } } public int seconds //获取或设置秒数的属性 { get { return second; } set { second = value; } }
(5)生成控件。选择菜单“生成”|“生成解决方案”命令(也可以按F6),将生成名为AccutronControl.dll的文件,它们默认位于程序目录下的AccutronControl\bin\Debug子目录下。
——至此,名为MyAccutronControl的自定义控件已经成功创建。注意,控件名是由对应的类名来决定的。、
(6)应用控件。新建一个winform窗体项目,将生成的.dll控件拖放到窗体中即可。(具体怎么加载这个控件到工具箱很简单的大家应该都清楚【右击选择项,浏览,找到刚才生成的.dll文件即可】)
tips:在VS2010 下可以直接运行控件
运行如下: