2011-08-17 108 views
-2

当我从父类中覆盖事件时,例如System.Web.UI.Page中的OnLoad()方法,为什么仍然调用“base.OnLoad(e)”,但是甚至当我移除对基类中的重写方法的调用时,Load事件仍然被触发?覆盖类中的派生成员

public partial class _Default : System.Web.UI.Page 
{ 
    protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 
    } 
} 
+0

请说明。你是说当你从'OnLoad'方法中删除'base.OnLoad(e)'时,它不会触发? – Tejs

回答

3

到base.OnLoad(E)的调用确保在基本实现方法的一切都被称为除了你的代码重写该方法(在您的覆盖方法,而不仅仅是代码执行)。

无论是哪种情况,它都不应该影响成功发起的事件。

+0

是的,提高这个事件与处理它不同。 – BoltClock

1

您的代码行protected override void OnLoad(EventArgs e)并不是重写一个事件,因为OnLoad不是一个事件。它覆盖System.Web.UI.Control上定义的一个方法,从中继承System.Web.UI.Page,其中MSDN表示引发Load事件。

如果您的OnLoad的执行调用base.OnLoad(e),您应该发现Load事件被引发。

如果您的OnLoad的执行没有调用base.OnLoad,那么应该会发现Load事件不会被引发。

你几乎肯定要确保你打电话给base.OnLoad