前面几篇文章讲解了与利用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基类的事件和派生类重写对应事件处理程序的过程进行了介绍。需要读者注意的是,上文并非说明自定义服务器控件仅能够重写以上几个来自Control基类事件的事件处理程序。如果自定义控件继承自其他原本带有事件的基类,例如,Button、DataList等(归根到底,它们也是从Control基类继承),那么继承的事件处理程序仍然可以被重写,例如,继承自Button类的控件自然获得Click事件,并且可以重写OnClick事件处理程序。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
·FTP服务器 (5132篇文章)
·双核服务器技术 (5910篇文章)
·网站服务器的选型 (6731篇文章)
·网吧流媒体服务器 (5399篇文章)
·刀片服务器专题 (4703篇文章)
·网吧服务器专栏 (4645篇文章)
·服务器配置专栏 (9372篇文章)
·IIS服务器应用技巧 (5192篇文章)
·打造安全服务器 (11396篇文章)
·服务器行业应用 (4684篇文章)
·双核服务器技术 (5910篇文章)
·网站服务器的选型 (6731篇文章)
·网吧流媒体服务器 (5399篇文章)
·刀片服务器专题 (4703篇文章)
·网吧服务器专栏 (4645篇文章)
·服务器配置专栏 (9372篇文章)
·IIS服务器应用技巧 (5192篇文章)
·打造安全服务器 (11396篇文章)
·服务器行业应用 (4684篇文章)
·asp.net 实现购物车详细代码 (9911次浏览)
·从零开始学ASP.NET(基础篇) (7785次浏览)
·ASP.NET 2.0中Gridview控件高级技巧 (6024次浏览)
·ASP.NET2.0连接SQL Server数据库详解 (3363次浏览)
·ASP.NET 2.0移动开发入门之基础 (1211次浏览)
·面试ASP.NET程序员的笔试题和机试题 (623次浏览)
·为Asp.net应用程序设置构建Web服务 (617次浏览)
·ASP.NET Web Matrix开发工具简介 (575次浏览)
·技巧:ASP.NET热点问题解答14个 (451次浏览)
·详细介绍ASP.NET状态保存方法 (396次浏览)
·从零开始学ASP.NET(基础篇) (7785次浏览)
·ASP.NET 2.0中Gridview控件高级技巧 (6024次浏览)
·ASP.NET2.0连接SQL Server数据库详解 (3363次浏览)
·ASP.NET 2.0移动开发入门之基础 (1211次浏览)
·面试ASP.NET程序员的笔试题和机试题 (623次浏览)
·为Asp.net应用程序设置构建Web服务 (617次浏览)
·ASP.NET Web Matrix开发工具简介 (575次浏览)
·技巧:ASP.NET热点问题解答14个 (451次浏览)
·详细介绍ASP.NET状态保存方法 (396次浏览)
·ASP.net中使用C++和J# 10-31
·Asp.net中实现单点登陆 10-31
·ASP.NET中的蝴蝶效应 10-31
·ASP.NET中的MVC模式应用 10-31
·Asp.net中操作EXCEL文件(C#) 10-31
·Asp.net中Treeview解决方案 10-31
·ASP.NET中NHibernate的最佳实践 10-31
·ASP.NET在VS2008与.NET FX 3.5中增强的功能 10-31
·ASP.NET应用程序性能优化 10-31
·ASP.NET应用程序的成员管理与安全 10-31
·Asp.net中实现单点登陆 10-31
·ASP.NET中的蝴蝶效应 10-31
·ASP.NET中的MVC模式应用 10-31
·Asp.net中操作EXCEL文件(C#) 10-31
·Asp.net中Treeview解决方案 10-31
·ASP.NET中NHibernate的最佳实践 10-31
·ASP.NET在VS2008与.NET FX 3.5中增强的功能 10-31
·ASP.NET应用程序性能优化 10-31
·ASP.NET应用程序的成员管理与安全 10-31
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
站内频道文章精选
百度推荐,商机无限
搜索您感兴趣的内容



