(3)在构造函数中初始化字体和颜色,代码如下: public ShowTime() { InitializeComponent(); txtFont = Font;//系统默认的字体 txtColor = Color.Black; }
(4)重写控件的OnPaint事件,以绘制控件的显示内容,代码如下: protected override void OnPaint(PaintEventArgs pe) { Graphics g = pe.Graphics; SolidBrush drawBrush = new SolidBrush(txtColor); g.DrawString(strNowTime, txtFont, drawBrush, 0, 0); base.OnPaint(pe); }
(5)添加一个Timer组件,为Timer组件添加Tick事件,每次响应Tick事件时,触发控件的Paint事件,更新当前时间,代码如下: private void timer1_Tick(object sender, EventArgs e) { strNowTime = DateTime.Now.ToLongTimeString(); Invalidate(); }
5 测试控件
控件不是独立的应用程序,必须寄宿在容器中,下面创建一个应用程序对控件进行测试。
(1)向解决方案添加一个新的“Windows 应用程序”项目,并将其命名“Test”。
(2)在解决方案资源管理器中,右击测试项目的“引用”节点。单击“添加引用”,显示“添加引用”对话框。单击标记为“项目”的选项卡。“项目名称”下将列出 AddressView 项目。双击该项目以将引用添加到测试项目。
(3)从工具箱中分别选择“ctlAddressView”、“ctlAddressViewN”和“ShowTime”控件,添加到Form窗口,如图5。
(4)在解决方案资源管理器中,右击“Test”,然后单击“生成”。并将“Test”项目设为启动项目。
(5)按下“Ctrl+F5”执行程序,首先测试“ctlAddressView”和“ctlAddressViewN”控件,在“办公电话”编辑框中输入带有字母的字符串,程序会弹出错误信息框,如图6。
(6)在“showTime1”控件的属性浏览器中,更改“显示属性”类别中的“TextColor”属性,将字体改为红色,和图7。

图5

图6

图7
6 结语
通过实例介绍了如何创建复合、扩展和自定义的用户控件,可以看出,在Visual C#环境中能够很方便灵活地实现用户控件,开发人员可以随心所欲地设计自己需要的各种控件,程序在Visual Studio 2005中调试通过。
|