以下是我的理解:
Page对象有一Load事件,应该是如下定义:
protected event EventHandler Load;
此事件继承到页面
OnLoad是Page的一个方法,应该是如下定义:
protected virtual void OnLoad(EventArgs e)
此方法唤起Load事件,方法内大约包含:
if(Load)Load(this,e);
此方法也继承到页面,甚至被重写
Page_Load只是页面类的一个方法,本来它与页面Load事件毫无关系
当Page指令AutoEventWireup="true"的时候,页面类会按规律分析方法并加入对应事件。
规律是:方法名以Page_为前缀的与后缀对应的事件(Load)对应,例如还有:Page_Init等
对应过程即:
Load += Page_Load;
这样在Page生命周期发执行OnLoad的时候,就会唤起Load事件,并执行用户定义的Page_Load方法
网上收集:
负责通知事件的登记对象.就是说Load事件可能需要很多对象知道,只要对象里登记了这个事件,那么调用下面的方法时,就会通知所有登记了的对象.
protected override void OnLoad(EventArgs e){}
侦听事件的方法.这个是需要登记的对象内的处理方法.OnLoad被调用,就会通知下面方法所在的对象.
private void Page_Load(object sender, System.EventArgs e){}
可以参考MS社的<<Applied Microsoft .NET Framework Programming>> By Jeffery Richter.