听完《ASP.NET中的事件处理》的总结
下午听完《ASP.NET中的事件处理》后,终于对.NET里事件有了更深的认识。之前编写Windwos Form程序和ASP.NET程序只是简简单单的单击按钮就进入后台事件编写代码,从来不关心事件是怎样生成的。表面上看来简单,但.NET为程序员隐藏了很多细节,于是总是搞不懂事件执行机制。幸好听了这节课,才明白底层细节.以下是一些认为比较好的记录:
第一、C#中使用事件需要的步骤:
1.创建一个委托
2.将创建的委托与特定事件关联
3.编写事件处理程序
4.利用编写的事件处理程序生成一个委托实例
5.把这个委托实例添加到产生事件对象的事件列表中去,这个过程又叫订阅事件
ASP.NET支持3个主要的事件组:
• 第一组包含在asp.net生成页面时自动发生,我们使用这些事件建立页面
• 第二组包含了用户与页面交互时发生的所有事件(这种最强大)。
• 第三种是html内部的事件,这些事件在浏览器上执行。
第二、ASP.NET窗口事件处理
• 事件驱动(Event Driven)是窗口程序设计的核心,其重要性就相当于VC中的消息映射,不了解事件驱动就无法深入窗口程序设计的殿堂。
• 在C#语言中,事件的处理主要有两种方法:
– 委托式的事件处理模式(Delegation Event Model)
– 对可重载方法(Event Method)的重载。
委托式的事件处理模式
委托式事件处理模式,就是将特定的事件委托给负责事件处理的方法来进行。
• 在.NET中,类有数据成员与函数成员、事件成员。
事件成员就是那些与该类的对象相关的事件。
• 事件处理可通过委托关系来进行。委托关系可以这样来建立:
object.Event+=new EventHandle(Method); 其含义是:如果对象object发生了Event事件,就交由方法Method来处理。一个对象可以委托多个不同的处理,“+=”用来增加新的委托关系。
委托式的事件处理模式
• Method是真正进行事件处理的地方,格式为:
public void Method(object sender,EventArgs
e);
EventArgs是.NET Framework中有关事件的基础类,所有发生的事件都被包装成EventArgs类或其子类的对象。当事件发生时,Method会收到这两个参数。一旦建立了委托关系,系统自动在特定事件发生时,转而执行您所委托的事件处理方法。
重载事件方法
• 在C#中,针对不同类所相关的事件,除了定义有事件成员外,也定义了可重载的事件方法,可通过重载这些事件方法来设计你所希望的对应事件处理。
• 这些可重载的事件方法名称皆以“On”开头,且被声明为“virtual”,一个被声明成virtual的方法,就代表它可被重载,被声明成override的方法也代表它可被重载,如果声明成abstract则必须被重载。
例如按钮的Click事件,就有一个对应的可重载的
OnClick事件方法。
ASP.NET服务端添加客户端事件:
ASP.NET 服务器控件可以发送两种客户端脚本:
•客户端脚本块:客户端脚本块通常是用JavaScript 编写的,其中通常包含在发生特定的客户端事件时执行的函数。
• 客户端HTML 属性:
客户端HTML 属性提供将客户端事件与客户端脚本联系在一起的方法
ASP.NET中发送客户端脚本块(动态添加JavaScript方式,):
ClientScriptManager是asp.net 2.0 之中用来管理Client端Script的新类,要使用ClientSriptManager是通过Page.ClientScript属性,它可以取得一个ClientScriptManager对象作参照,以便能够对JavaScript进行管理,注册及添加JavaScript,四种动态添加JavaScript的方式:
| 方式 | 说明 |
| RegisterClientScriptBlock | |
| RegisterClientScriptInclude | |
| RegisterStartupScript | |
| RegisterOnSubmitStatement |
Client端Click事件
ASP.NET 2.0针对Button提供了Client端的Click事件,而既然是Client端事件自然是调用Client端的Script(如JavaScript),较之于Attributes属性增加额外的属性方便多了.
由于ASP.NET是Server端的技术,要处理任何消息必须传送回Server端执行,但往往时效性会略逊Client端的JavaScript一筹,所以许多程序员喜欢搭配JavaScript来使用,而ASP.NET 2.0为体贴程序员增加了OnClientClick属性,因此只要在此属性增加一些简单的JavaScrpt程序,即可不必额外境加<Script>区段的JavaScript声明.
ASP.NET 中发送HTML 属性
• 这种方法通常只适用于从System.Web.UI.WebControls.WebControl 类导出的服务器控件,因为从这个类导出的控件会发送某些HTML 元素。
• WebControl 类包含一个将HTML 元素属性添加到由Web 控件发出的HTML 元素的方法。该方法称为AddAttributesToRender(),它只有一个输入参数,即HtmlTextWriter 的实例。
通过客户端事件引发服务端事件
注意以下二个问题:
第一、点击按钮提交后,浏览器的滚动条总是滚动到最上面,怎样才能定位到按钮焦点处?
第二、怎样用回车键提交页面。
浙公网安备 33010602011771号