在.NET中有3种创建自定义Windows窗体控件的基本技术,分别对应于3个不同的起点。这些选择允许开发人员在简易型和灵活性之间进行适当的平衡,选择最合适的技术。这三种方法是:
- 继承现有的控件
- 建立复合控件(使用UserControl类作为起点)
- 从头编写控件(使用Control类作为起点)
1、继承现有的控件
最简单的技术是从一个已开发的完整的Windows窗体控件开始,创建一个继承现有控件的新类。这个新类拥有它继承的基类的全部功能。可以在这个新类中增加新的逻辑来创建附加功能,或重写父控件的功能(当许可时)。
如果需要特殊验证或编辑方式的文本框仅用在一个地方,创建一个派生控件是没有意义的。此时,只需在窗体中使用该控件的地方,增加一些逻辑用于处理该控件的事件,操作该控件的属性和方法即可。
2、构建复合控件
有时候,一个现有的控件不能提供所需的功能,但是两个或两个以上现有控件的组合可以完成。
与派生控件一样,复合控件仅适用于在多个地方需要相同功能的情况。
在Windows Forms中,用于创建复合控件的基类就是UserControl类。
3、从头编写控件
如果控件需要的特定功能与任何现有控件都没有关联,就应该从头编写,绘制它自己的界面,实现它自己的逻辑。该选项需要开发人员做更多的工作,但可以在.NET和Windows窗体中实现任何功能,包括绘制非常复杂的用户界面。
要从头编写控件,必须继承Control类,该类能够提供像颜色和尺寸属性这样的基本功能。有了内置的基本功能后,要使自定义控件运转起来,主要任务就是为控件增加所需的属性和方法,编写将控件描绘在屏幕上的呈现逻辑,以及处理控件的鼠标和键盘输入。