用简单的代码测一测你是否真的了解:Asp.Net中的事件和委托的实现
2009-12-12 23:19
561 查看
页面:
<%@ Page Language="C#" CodeBehind="Default.aspx.cs" AutoEventWireup="true" Inherits="WebApplication1._Default" %>后台:
代码protected internal virtual void OnLoad(EventArgs e)
{
if (this.HasEvents())
{
EventHandler handler = this._occasionalFields.Events[EventLoad] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
}
和我们的想象有一点差别,但完全可以理解,而且你可以进一步的点击深入。
至此,我们可以梳理出ASP.NET的委托事件机制:
1. .NET自有的委托EventHandler,确定了委托调用的方法签名(参数:sender和e,返回值void),这就是为什么我们看到的事件方法都长得一个样子的原因;
2. 在Page类及其父类中,的确是定义了一系列的事件和击发(raise)这些事件的方法。我们可以利用这些事件(如写Page_Load()方法),也可以直接override调用这些事件的方法(如OnLoad()方法)。这两者之间的区别或关系,以前我一直是晕的。
3. 因为AutoEventWireup的原因,我们没有看到“事件订阅”的代码,太遗憾了,所以我们接下来自己实现它:(首先AutoEventWireup=“false”)
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.Load += new EventHandler(Page_Load);
}
现在,能回答本文开头的那些题目了吧?
<%@ Page Language="C#" CodeBehind="Default.aspx.cs" AutoEventWireup="true" Inherits="WebApplication1._Default" %>后台:
代码protected internal virtual void OnLoad(EventArgs e)
{
if (this.HasEvents())
{
EventHandler handler = this._occasionalFields.Events[EventLoad] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
}
和我们的想象有一点差别,但完全可以理解,而且你可以进一步的点击深入。
至此,我们可以梳理出ASP.NET的委托事件机制:
1. .NET自有的委托EventHandler,确定了委托调用的方法签名(参数:sender和e,返回值void),这就是为什么我们看到的事件方法都长得一个样子的原因;
2. 在Page类及其父类中,的确是定义了一系列的事件和击发(raise)这些事件的方法。我们可以利用这些事件(如写Page_Load()方法),也可以直接override调用这些事件的方法(如OnLoad()方法)。这两者之间的区别或关系,以前我一直是晕的。
3. 因为AutoEventWireup的原因,我们没有看到“事件订阅”的代码,太遗憾了,所以我们接下来自己实现它:(首先AutoEventWireup=“false”)
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.Load += new EventHandler(Page_Load);
}
现在,能回答本文开头的那些题目了吧?
相关文章推荐
- 用简单的代码测一测你是否真的了解:Asp.Net中的事件和委托的实现
- 用简单的代码测一测你是否真的了解:Asp.Net中的事件和委托的实现
- 用简单的代码测一测你是否真的了解:Asp.Net中的事件和委托的实现
- asp.net+Ajax校验用户是否存在的实现代码
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- ASP.NET中实现多文件上传简单代码
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- Asp.net 2.0 GridView的几个事件(如实现: 行的双击/单击/捕捉键盘按键/鼠标悬浮/移出效果)(示例代码下载)
- Asp.net简单代码设置GridView自适应列宽不变形实现思路与代码
- 一个简单的AJAX实现,基于C#的ASP.Net,包括服务器端的程序代码
- Asp.net图片上传实现预览效果的简单代码
- ASP.NET在后台代码实现个功能,根据选择提示用户是否继续执行操作
- ASP.NET 定制简单的错误处理页面实现代码
- 一个超级简单的IP地址搜索引擎(Asp.Net)事件代码12行
- asp.net中通过DropDownList的值去控制TextBox是否可编写的实现代码
- ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现
- asp.net关于onpropertychange和oninput事件实现代码
- ASP.NET中定制自己的委托和事件相关代码
- ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现