WorldWind中的插件类是个庞大的类,可以说从软件设计层面上统筹可扩展的插件体系的设计思想是WorldWind中的精华,值得学习和借鉴。插件体系中的所用到的类可以分为两大类,一类是插件类Plugin及其派生类,另外一类是插件类中的界面类,如PluginDialog、PluginInstallDialog、插件列表视图类PluginListView和插件列表视图项类PluginListItem等。这些类之间的关联关系图如下所示。本节主要介绍插件类中的界面类。
插件列表视图类PluginListView和插件列表视图项类PluginListItem相对比较简单。它包含的主要的字段、属性和方法不再赘述。
另:此处再次总结一下利用Visual Studio开发类库、用户控件类库、自定义控件类库或组件类库项目的一般步骤:
1) 启动Visual Studio,创建一个空项目,假定空项目名称为“MyControlTest”。
2) 右键单击“MyControlTest”项目,在弹出的菜单中选择“Add”菜单,然后在弹出的二级菜单中选择“New Item…”菜单,打开“Add New Item”对话框。该对话框中列出了Visual Studio所自带的所有可用项的模板,在其中选择需要的项类型即可创建需要的项。比如,选择“Custom Control”,并在下方的“Name”编辑框中输入名称,单击“Add”按钮即可完成该类型项的创建。接下来的工作就是集中精力完成各种类库开发的事情了。
3) 再次重申下,Visual Studio可以创建的类库主要包含以下几大类:
(1)类库Class,图标为,不可视
(2)用户控件类库User Control,图标为,可视控件
(3)自定义控件类库Custom Contro,图标为,可视控件
(4)组件类库Component,图标为,不可视控件
这几种类库都是以动态链接库(.dll)的形式存在的,至于它们之间的区别请查阅相关文献自行学习,此处不再赘述。它们的派生关系如下图所示。一般情况下,当用户创建一个自定义控件类库项时,默认派生自Control类。当然,用户可以修改自己的自定义控件的父类。
请参考:
WinForm中Component Class、User Control及Custom Control的区别和使用建议
.NET Framework 为您提供了开发和实现新控件的能力。除了常见的用户控件外,现在您会发现,您可以编写能执行自身绘图的自定义控件,甚至还可以通过继承扩展现有控件的功能。确定创建何种类型的控件可能会费一番功夫。本节重点介绍了各类可继承控件间的区别,同时提供关系到为项目选择的类型的注意事项。
1、 Component Class
Component Class可以从任何现有的 Windows 窗体控件继承产生新的控件。此方法使您得以保留 Windows 窗体控件所有固有功能,然后通过添加自定义属性、方法或其他功能扩展此固有功能。例如,可以创建一个从 TextBox 继承的控件,该控件只接受数字并能自动将输入转换为值。这样的控件可能包含验证代码,每当文本框中的文本发生更改时就会调用此代码,另外,控件还可能有一个附加的“值”属性。在某些控件中,也可以通过重写基类的 OnPaint 方法将自定义外观添加到控件的图形接口上。
处于下列情况时继承 Windows 窗体控件:
大多数所需的功能已经与现有的 Windows 窗体控件相同。
不需要自定义图形接口,或者想为现有控件设计一个新的图形前端。
2、User Control
用户控件是封装在公共容器内的 Windows 窗体控件的集合。此容器包含与每个 Windows 窗体控件相关联的所有固有功能,允许您有选择地公开和绑定它们的属性。用户控件的例子之一可能是已生成的显示数据库中客户地址数据的控件。该控件可能包括几个用来显示字段的文本框,几个用来通过记录定位的按钮 (Button) 控件。可以有选择地公开数据绑定属性,可以将整个控件打包并在应用程序之间重复使用。
处于下列情况时使用 UserControl :
要将若干个 Windows 窗体控件的功能合成一个可重新使用的单元。
3、 Custom Control
Custom Control是通过从 Control 继承来完全从头地创建一个控件。Control 类提供控件(例如事件)所需的所有基本功能,但不提供控件特定的功能或图形接口。与通过从用户控件或现有 Windows 窗体控件继承来创建控件相比,通过从 Control 类继承来创建控件需要耗费的心思和精力要多得多。因为作者必须为控件的 OnPaint 事件编写代码以及所需的任何功能特定代码,但同时也允许作者根据自己的需要,灵活地自定义调整控件。时钟控件即是一个自定义控件,它复制模拟时钟的外观和操作,自定义绘图将被调用来促使时钟指针走动,以响应内部计时器组件的 Tick 事件。
处于下列情况时使用Custom Control:
想要提供控件的自定义图形化表示形式。
需要实现无法从标准控件获得的自定义功能。