• 第二十四讲 ASP.NET中开发复合控件


    *摘要
    。复合控件概述
    。如何开发复合控件
    。复合控件和用户控件区别
    。复合控件和自定义控件
    。复合控件的事件传递
    。复合控件的使用实例

    *ASP.NET中的组件
    。用户控件
    。复合控件
    。自定义控件

    *复合控件概述
    。ASP.NET复合控件提供了一种方法,使用这种方法,您可以通过组合现有的控件来创作新控件。
    。此方法也可用于ASP.NET移动控件。例如,如果将多个移动控件封装到一个控件中,您可以创建一个复合移动控件。
    。复合控件等效于使用ASP.NET页语法创作的用户控件。复合控件和用户控件之间的主要区别是用户控件以.ascx文本文件的形式持续存在,而复合控

    件被编译到并持续存在于程序集文件(.dll)中。

    *复合控件概述
    。复合控件可呈现一个重新使用现有控件功能的用户界面。复合控件可以从子控件的属性合成属性并处理由子控件引发的事件。它还可以公开自定义

    属性和事件。
    。复合控件必须执行如下操作。
    -重写从Control继承的受保护的CreateChildControls方法,以创建子控件的实例并将它们添加到Controls集合。
    -实现System.Web.UI.INamingContainer接口。
    INamingContainer是一个没有方法的标记接口。当控件在实现INamingContainer时,ASP.NET页框架可在该控件下创建新的命名范围,因此能够确保

    子控件在控件的分层树中具有唯一的名称。当复合控件公开模板属性,提供数据绑定或需要传送事件到子控件时,这是非常重要的。
    。因为子控件会提供呈现逻辑,所有中必重写Render方法。
    。语言独立性
    虽然您必须通过单一语言(例如C#)创作单个用户控件,但当创建复合控件时,您可以组合以多种语言编写的控件。
    。常规复合
    复合控件可以从任何控件类继承,包括ASP.NET服务器控件Control基类(System.Web.UI),移动Web窗体MobileControl基类或移动Web窗体Panel控件

    类。
    。复合控件部署
    在创建了复合移动控件之后,您通将其编译到程序集(例如MyCompany.MobileControls.dll)中对其进行部署。然后,通过在自定义标记中使用

    @Register指令在页上注册该程序。

    *如何开发复合控件
    。创建Web自定义控件
    。注册到工具箱
    。使用Web控件

    *复合控件和用户控件区别

    *自定义控件
    。创建简单的自定义控件时,所要做的只是定义从System.Web.UI.Control派生的类并重写它的Render方法。Render方法采取

    System.Web.UI.HtmlTextWriter类型的参数。控件要发送到客端的HTML作为字符串参数传递到HtmlTextWriter的Write方法。


    *事件冒泡
    。ASP.NET页框架提供一种称为“事件冒泡”的技术,允许子控件将事件沿其包容层次结构向上传播。事件冒泡允许在控件层次结构中更方便的位置

    引发事件,并且允许事件处理程序附加到原始控件以及公开冒泡的事件的控件上。
    。控件可以通过从基类System.Web.UI.Control继承的两个方法参与事件冒泡。这两个方法是:
    OnBubbleEvent和RaiseBubbleEvent

    *复合控件的使用
    。如果想要扩展单个控件,例如Label的功能,请勿创建复合控件或用户控件。在这种情况下,应当从Label派生(以获得继承和多态性好处)并添加

    或重写成员。如果创建一个仅包含一个控件(Label)的对象模型。只有当想要合并多个现有控件时,才应创建或复合控件。
    。编写ASP.NEt复合控件不要忘了实现INamingContainer接口。

     

  • 相关阅读:
    JavaScript语法
    javascript的用法
    格式和布局
    Css样式表
    HTML基本语言(表单的基本元素)
    HTML超文本语言(一般标签)
    C#项目打开/保存文件夹/指定类型文件,获取路径
    在DataGridView控件中加入ComboBox下拉列表框的实现
    DataGridView 中添加CheckBox和常用处理方式 .
    数据库建模模板、菜单显示出问题解决方案
  • 原文地址:https://www.cnblogs.com/iceberg2008/p/1429271.html
Copyright © 2020-2023  润新知