|  | 设为首页 加入收藏 联系我们 |

|  | 首 页 行业资讯 网站运营 网络编程 数 据 库 网页设计 网络安全 网站推广 平面设计 服 务 器 电子商务 |

| 站内搜索： 热门关键字： 淘特　CMS　门户　信息港　房产　汽车　旅游　分类信息　下载　JspCms 内容管理系统 报社采编 |

现在位置：首页> 网络编程

编辑推荐

热门点击
·ASP.NET应用中缓存Oracle数据
·关于Asp代码与页面的分离
·ASP.NET 2.0功能扩展:跨页提交
·ASP.NET网络编程中常用到的27个函..
·ASP.NET如何在窗体和窗体之间传送数..
·Asp.net中防止用户多次登录的方法
·ASP.NET程序安全的基础知识
·ASP.NET中Server对象的方法
·关于ASP.NET编程中的嵌套If语句
·.NET程序员应该知道些什么

图片推荐
·.NET程序员应该知道些什么

ASP.NET 2.0 服务器控件之复合控件事件
作者： 日期：2010-03-31 出处： 点击:

复合控件的事件处理简介 谈到自定义控件的事件处理问题，这在前面的系列文章中已经进行讲解。由前文可知，实现控件事件的核心主要是定义事件属性结构和事件处理程序等。然而，这些内容是构建所有自定义服务器控件的基础。仅仅依靠这些方法是无法实现复合控件的事件的。因为，复合控件中包含子控件，这就使得复合控件的事件处理变得复杂起来。显而易见，在复合控件的事件实现过程中，需要面临的最大问题是：由于不允许开发人员直接访问子控件(虽然通过Controls集合访问的方法可以实现，但是破坏了程序的封装性，因此是不被允许的)，如果子控件的事件不能作为顶级事件引发，那么将无法实现子控件的事件处理。简单的说，即如何实现子控件的事件上传。所谓事件上传是指把子控件的事件暴露为顶级事件，这样父控件可以检查到事件，并按照定义来执行相关事件处理程序。 由以上内容可知，复合控件的事件处理，主要是实现子控件事件上传的过程。下面将介绍两种常用的事件上传实现方法：包含法和冒泡法。这两种方法实现机理不同，然而，完成了同样的功能。在下文中，我们将通过理论结合示例的方法展开讲解。 包含法 包含法的核心是，通过在子控件的事件处理程序中调用复合控件的顶层事件处理程序，以完成子控件的事件上传。在执行过程中，当引发子控件事件后，子控件的事件处理程序将自动调用相关顶层事件处理程序。 包含法的关键步骤如下： 。 在CreateChildControls方法中，为子控件添加事件处理程序。 。 定义顶层事件及其事件处理程序OnEventName. 。 在子控件的事件处理程序中调用OnEventName. 。 定义事件属性结构。 由以上内容可知，包含法的步骤与前面文章中介绍的实现控件的方法基本类似。关键是多出了一个在CreateChildControls方法中，为子控件添加事件处理程序的步骤。为了读者能够更加清晰的理解包含法，下文列举了一个利用包含法为复合控件实现事件的示例。 首先，利用上一篇文章中介绍的复合控件呈现方法，创建一个由文本框和按钮组成的复合控件，然后，使用上文所述的包含法，将按钮的Click事件上传为顶层事件Submit.下面列举了该控件的源代码。
using System; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel; using System.ComponentModel.Design; namespace WebControlLibrary{ public class CompositeEvent ： CompositeControl { //声明变量 private Button _button; private TextBox _textBox; private static readonly object EventSubmitKey = new object(); //定义属性ButtonText，用于指定按钮上的文字 [ Bindable(true)， Category("Appearance")， DefaultValue("")， Description("获取或设置显示显示在按钮上的文字") ] public string ButtonText { get { EnsureChildControls(); return _button.Text; } set { EnsureChildControls(); _button.Text = value; } }
//定义属性Text，表示文本框的输入

[1]

- 返回首页
- 打印本文
- 加入收藏
- 返回顶部
- 关闭窗口

相关文章 | 查看留言 发表评论
用 户： |
内 容： |
验证码： |

关于本站　|　免责声明　|　联系我们　|　版权隐私　|　友情链接　|　网站地图
联系电话：0531-88511191 | 客服QQ：6410861 | Email：totcms@163.com | ICP备：88888号 Copyright © TotCms.com All Rights Reserved. 济南淘网科技 版权所有