摘 要 在使用Visual C#开发应用程序的过程中,经常会遇到系统提供的控件不能满足用户需求的情况,这时需要创建用户控件实现具有特殊功能的控件。Visual C#允许用户定义三种类型的用户控件:复合控件、扩展控件和自定义控件,通过实例解析了在Visual C#中如何实现这三种类型的控件。
关键词 C#;用户控件;自定义控件
1概述
Visual C#提供了丰富的控件库,但有时这些控件不能满足开发需求,原因是多方面的,控件不能以希望的方式绘制自己,或者控件在某个方面受到限制,再或者需要的控件根本不存在。.NET Framework提供了创建满足需要的控件方式。可以通过继承来扩展现有控件的功能,还可以编写自定义控件,这些控件执行用户指定的特殊功能。
在.NET Framework中,Windows窗体支持三种用户定义的控件:复合控件(或者叫组合控件)、扩展控件和自定义控件。
1.1复合控件
复合控件是根据现有控件的功能创建一个新控件。这类控件一般用于把控件的用户界面和功能封装在一起,或者把几个其他控件组合在一起,改善控件的界面。复合控件包含与所包含的每个Windows窗体控件相关联的固有功能,允许有选择的公开和绑定它们的属性。复合控件还提供了大量的默认键盘处理功能,不需要任何额外的开发。复合控件从UserControl类派生,要将若干个 Windows 窗体控件的功能合成一个可重新使用的单元时可以使用复合控件。
1.2扩展控件
扩展控件是指从现有的Windows窗体控件导出的继承控件,此方法可以保留Windows窗体控件的固有功能,然后通过添加自定义属性、方法或其他功能来扩展原有控件的功能。可以重写基控件的绘制逻辑,然后更改该控件的外观以扩展其用户界面。扩展控件主要用在下列情况:
(1)大多数所需的功能已经与现有的 Windows 窗体控件相同。
(2)不需要自定义图形用户界面,或者为现有控件设计一个新的图形用户界面。
1.3 自定义控件
当没有控件可以满足要求时,可以创建自定义控件,即从头开始创建控件。自定义控件从Control类继承,它要求用户自己绘制出用户界面,在创建控件的过程中没有现成的控件可以使用。与通过从UserControl或现有Windows窗体控件继承创建控件相比,通过从Control类继承创建控件需要耗费更多的时间。由于大量的实现留给了开发者进行,因此,创建出来的控件可以具有比复合控件或扩展控件更大的灵活性,可以使控件完全满足特定的需要。要实现自定义控件,必须编写该控件的OnPaint事件代码,以及所需的任何功能的代码,还可以重写WndProc方法并直接处理窗口消息,这是创建控件的最强大的方法。一般在下列情形时使用自定义控件:
(1)想要提供控件的自定义图形化表示形式。
(2)需要实现无法从标准控件获得的自定义功能。
|