快速业务通道

ASP.NET2.0服务器控件开发之实现事件

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22

前面几篇文章讲解了与利用ASP.NET 2.0技术创建自定义服务器控件属性有关的内容。从本文开始,包括随后的几篇文章将探讨创建自定义服务器控件事件的方法。本文重点对实现控件事件的基本概念进行介绍,这些概念对于帮助开发人员为服务器控件创建事件有着重要意义。

1. 事件基本概念

事件是当有动作发生或者状态改变时,类发出的信息或者通知。通常情况下,状态的发生或者改变由用户界面动作初始化,例如,单击按钮,或者由于其他的程序逻辑引起。产生事件的类或者说发送通知的类叫做事件源sender,接收事件的类叫做事件接收者receiver。二者之间通过委托(delegate)实现关联。下面列举了一段常见的应用事件代码。

// 声明事件
ClickcustomControl.Click += new EventHandler(this.customControl1_Clicked);
// 实现事件处理程序
customControl1_Clicked(object sender,EventArgs e){......}

如上代码列举了服务器控件声明事件和实现事件处理程序的过程。由于这个过程非常简单,在此将不多做解释。另外,在实际应用中,开发人员通过为服务器控件实现事件机制,可以不采用以上的声明事件方式,而是在控件声明标记中仅仅列出"OnClick = customControl1_Clicked"即可。实际上,事件的声明和具体事件处理程序的实现都是比较简单易用的。然而,为控件实现事件机制却不是一件容易的事情。

从服务器控件开发的角度而言,控件事件(仅指服务器端事件,而不包括客户端事件)可能来自两个方面:一是从基类继承的事件。例如,假设自定义控件从Button类继承,那么该控件将继承基类的Click事件。二是根据开发需求而创建的自定义事件。下面分别对这两种事件进行介绍。

2. 实现从基类继承的事件

众所周知,自定义服务器控件归根结底是从System.Web.UI.Control派生而来。该基类中已经定义了一些事件。因此,在创建服务器控件过程中,很可能需要重写以下继承的多个事件。

·DataBinding事件:该事件当服务器控件绑定到数据源时发生,其对应事件处理程序为OnDataBinding。

·Disposed事件:该事件当从内存释放服务器控件资源时发生,其对应的事件处理程序为OnDisposed。这是服务器控件生命周期的的最后阶段。

·Init事件:该事件当服务器控件初始化时发生,其对应的事件处理程序为OnInit。Init事件是控件生命周期的第一步。

·Load事件:该事件当服务器控件加载到Page对象中时发生,其对应的事件处理程序为OnLoad。

·PreRender事件:该事件在加载Control对象之后、呈现之前发生,其对应的事件处理程序为OnPreRender。

·Unload事件:该事件当服务器控件从内存中卸载时发生,其对应的事件处理程序为OnUnload。

以上内容针对Control基类的几个事件进行了简要说明。由于服务器控件均继承自Control基类(WebControl也是继承自Control类),因此,开发人员完全可以重写事件所对应的事件处理程序,这样便可以实现一些自定义内容。

若要实现自定义继承的事件,需要重写从基类继承的受保护的OnEventName方法,而不必附加委托(EventHandler)。通常情况下,重写的事件处理程序应该调用基类的OnEventName方法,以确保调用附加到事件的委托(除非不想调用这些委托)。以下代码片段说明自定义控件重写继承的DataBinding事件的处理过程。

protected override void OnDataBinding(EventArgs e)
{
 //添加一些自定义逻辑代码
 //调用基类方法
 base.OnDataBinding(e);
}

如上代码所示,在重写事件处理程序OnDataBinding过程中,首先需要添加一些根据应用需求而实现的自定义逻辑代码,然后,一定要牢记需调用基类方法。

以上内容对Control基类的事件和派生类重写对应事件处理程序的过程进行了介绍。需要读者注

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号