墨白

相对于人生易老,朱颜易改,大概最易变的还是人心。

博客园 首页 新随笔 联系 订阅 管理
什么是组件?
可以在不同的应用程序中使用的对象的集合。
软件编程中的积木
是个功能完备的单元,带有与它的内部体系结构相对独立的外部接口
例如DLL(文本对话框,aspnet_isapi.dll:用来处理ASP.NET的页面,FrameWork类库)

组件的优点:
单个组件比一个功能齐全的应用程序要简单地多,它仅仅是一组预先定义好的功能。
组件功能是独立的,如果接口相同可以拿另外一个组件来代替原来的组件,可以做到无缝升级。
可以重复使用
减少代码量,使得代码更容易维护

复合控件概念
ASP.NET复合控件提供了一种方法,使用这种方法,您可以通过组合现有的控件来创建新控件。
此方法也可用于ASP.NET移动控件。例如,如果要将多个移动控件封装到一个控件中,可以创建一个移动复合控件
复合控件相当于使用ASP.NET页语法创建的用户控件。复合控件和用户控件的主要区别是用户控件以.ascx文本文件的形式持续存在,而复合控件被编译到并持续存在于程序集文件(.dll)中。
复合控件可呈现一个重新使用现有控件功能的用户界面。
复合控件可从子控件的属性合成属性并处理由子控件引发的事件。它还可以公开自定义属性和事件。
复合控件必须执行如下操作:
重写从Control继承的受保护的CreateChildControls方法,以创建子控件的实例并将它们添加到Controls集合中。
实现System.Web.UI.INamingContainer接口
INamingContainer是一个没有方法的标记接口,当控件在实现INamingContainer时,ASP.NET页框架可在该控件下创建新的命名范围,因此能够确保子控件在控件的分层树中具有唯一的名称。当复合控件公开模板属性,提供数据绑定或需要传送事件到子控件时,这是非常重要的。
因为子控件会提供呈现逻辑,所以不必重写Render方法。
将WEB服务器控件组装成新的控件,可在其中添加新的属性和事件

语言独立性
虽然必须通过单一语言创建多个用户控件,但当创建复合控件时,可以组合以多种语言编写的控件。

常规复合
复合控件可以从任何控件类继承,包括ASP.NET服务器控件Control基类(System.Web.UI)、移动web窗体MobileControl基类或移动web窗体Panel控件类

复合控件部署
在创建了复合移动控件之后,您通过将其编译到程序集(例如:myCompany.MobileControls.dll)中对其部署。然后,通过在自定义标记中使用@Register指令在页上注册该程序集。

如何创建组合控件?
创建web控件
注册到工具箱
使用web控件

实例
用户控件做的东西完全可以由复合控件做,在复合控件中可以自定义属性和事件
复合控件是控件的容器
添加子控件的方法CreatedChildControl() 
Controls.Add();
Controls是当前子控件的集合


复合控件和用户控件的区别
复合控件:创作的最短设计时支持,以目标为公共语言运行库的面向对象的编程语言,作为.dll编译和保持,可重新发布,可拖放至工具箱
用户控件:创作的完全设计时支持,使用ASP.NET的页语法和脚本块声明性地创作,以.ASCX为扩展名,适合特定的应用程序。设计中的最小支持

复合控件和用户控件的区别实例
1.复合控件创作的最短设计时支持,用户控件创作的完全设计时支持。在可视化设计器中,创作用户控件与创作ASP.NET页没有差别
2.复合控件是以目标为公共语言运行库的面向对象的编程语言,如C#,是用编程方式创作的
用户控件是使用ASP.NET页语法和脚本块声明性地创作的。
3.复合控件是作为程序集(.dll)编译和保持的。用户控件是带有.ascx扩展名的文本文件
4.复合控件非常适于创作一般的可重新发布的控件,用户控件适合应用程序特定的功能
5.可将复合控件添加到可视化设计器的工具箱中并拖放到页面上,使用时可以在属性框中设计,用户控件只能在HTML中编写

自定义控件
核心是重写Render方法
创建简单的自定义控件时,所要做的只是定义从System.Web.UI.Control类派生的类并重写它的Render方法。Render方法采用System.Web.UI.HtmlTextWriter类型的参数。控件要发送到客户端的HTML作为字符串参数传递到HtmlTextWriter的Write方法

复合控件比自定义控件简单,但实现时相同

复合控件的事件传递
ASP.NET页面框架提供一种“事件冒泡”的技术,允许子控件将事件沿其包容层次向上传播。

复合控件的使用
实例:限制输入的复合控件

总结:创建复合控件时,不要忘了实现INamingContainer接口
posted on 2008-12-09 14:27  墨白  阅读(311)  评论(0编辑  收藏  举报