2024年4月27日发(作者:)

4.0 复合控件

复合控件只不过是普通的控件,还不属于要论及的另一种类型的

服务器控件。既然这样,为什么在各书籍和文档中总要留出专门的章节来

论述复合控件呢? 复合控件有什么特别之处呢?

顾名思义,复合控件是将多个其他控件聚集在某单一顶部和单一API下的控件。

如果某个自定义控件由一个标签和一个文本框组成,就可以说该控件是一个复合控

件。“复合”表明该控件本质上是由其他构成组件在运行时组合而成。复合控件所

暴露的方法集和属性集通常(但不是必须)由构成组件的方法和属性提供,并加入

一些新成员。复合控件也可以引发自定义事件,还可以处理并激起子控件所引起的

事件。

复合控件在中如此特别并不是因为其有可能成为服务器控件新类型

的代表。更确切的说是因为它在呈现时获得了运行时的支持。

复合控件是一个功能强大的工具,可以生成丰富复杂的组件,这些组件产生自

活动对象的相互作用而不是某些字符串生成器对象的标记输出。复合控件以构成控

件树的形式呈现,每个构成控件都有其自己的生命周期和事件,并且所有构成控件

都联合构成一个全新的API,并按需要尽可能地抽象化。

复合控件一般功能相对比较复杂,其编写复合控件有以下几种方式:

创建用户控件,并使用用户控件封装的用户界面实现复合控件。

开发一个编译控件,封装一个按钮控件和文本框控件,通过重写Render方法呈现。

从现有的控件中派生出新控件。

从基本控件类之一派生来创建自定义控件。

通过编写复合控件,能够让用户操作控件更加灵活。例如,通过复合控件来制

作一个用户登录功能,其中包含“用户名”、“密码”和“按钮”等。

在【文件】菜单中,执行【新建项目】命令,并弹出【新建项目】对话框。在

【模板】窗格中,选择Web选项,并在右侧选择【服务器控件】选项。

然后,将【名称】更改为Login,并单击【确定】按钮,如图8-19所示。

图8-19 创建服务器控件

此时,在项目【解决方案资源管理器】中,将自动创建一个

文件。然后,右击该文件,并执行【重命名】命令,修改文件名为,如图

8-20所示。

图8-20 修改文件名

双击文件,并在代码编辑器中删除原来的代码,并添加用户登录所需

的代码内容。代码如下:

文件名:

using System;

using c;

using entModel;

using ;

using ;

using ;

using ;