1. 控件和组件是什么 一般把Control翻译成控件,把Component翻译成组件 。
控件就是具有用户界面的组件 。要说的具体一点,就得回顾早期 Windows 的历史根源,当时控件指任何子窗口——按钮、列表框、编辑框或者某个对话框中的静态文本 。从概念上讲,这些窗口——控件——类似用来操作收音机或小电器的旋钮和按钮 。随着控件数量的增加(组合框、日期时间控件等等),控件逐渐成为子窗口的代名词,无论是用在对话框中还是用在其它种类的主窗口中 。没过多久 BASIC 程序员开始编写他们自己专用的控件,自然而然地人们便想到共享这些控件 。共享代码的方法之一是通过磁盘拷贝,但那样显然效率低下 。必须要有一种机制使开发者建立的控件能够在其它程序员的应用中轻而易举地插入,这便是VBA控件,OLE控件,OCX和最后ActiveX 控件的动机 。
这就是控件和组件之间产生混淆之所在 。因为为了解决控件的可复用问题,所有这些技术必须首先解决更为一般的组件重用问题 。(COM,如果你还记得它的话,意思是组件对象模型) 。在软件行话中,组件这个术语指任何可复用的对象或任何可与其它对象交互的代码体 。子程序的发明,曾经一度成为程序员趋之若鹜的软件工程圣杯:一种统一的编程理论,它使程序员从基本构建块——也就是用所选语言编写的各种组件建立大型系统 。从子程序演变到OOP,到DLLs,再到COM,再到.NET框架的每一种新的编程范例都代表了一种不同的提供可重用性的方案 。VBX使用DLLs的固化名称 。COM使用接口和IUnknown 。.NET框架使用微软的中间语言(MSIL)层和公共语言运行时(CLR)来提供统一的粘合 。
因此,控件是组件的一个主要样本(并且历史上曾驱动着组件的开发),控件又不仅仅是唯一的一种组件 。组件不需要显示任何信息或用户界面 。组件可能实现科学计算,收集性能数据,计算1971年1月1日到现在的毫秒数,仰或是读取布什总统竞选活动保险箱里的美金数 。
5怎么编写可复用的组件 平时常说的"组件"包含的范围比较广泛,一个程序集、一个链接库甚至代码中的一个类都可以称为"组件",而本章讲到的"组件"仅指.NET编程过程中实现了System.ComponentModel.IComponent接口的类型,包含范围相对比较狭隘 。
【怎么写组件】本章介绍了组件的定义及其作用、组件的两种状态(设计时与运行时),还讲到了"容器-组件-服务模型"以及应用了该模型的"窗体设计器"(Form Designer),最后提到了组件中的一个分支:控件以及自定义控件的分类 。