覆盖基页类事件处理程序?

时间:2010-08-02 08:05:48

标签: asp.net

假设我有一个带有Page_load()事件处理程序的基页类,我在派生的页面类中也有一个Page_load()事件处理程序。我意识到你不必编写vitual或override关键字,编译器也不会检测错误。为什么是这样?为什么要执行基类版本?

3 个答案:

答案 0 :(得分:2)

这些只是事件。

要覆盖,您需要使用OnLoad上提供的Control方法。

答案 1 :(得分:2)

尝试覆盖事件触发方法并调用自己的方法。我无法解释为什么它不抱怨两者,但我知道它们被添加到事件中,因此都在队列中被执行。

protected override void OnLoad(EventArgs e)
{
    this.Page_Load(this, e);
}

除了执行队列中的所有事件处理程序之外,您在此处重写的方法不会做任何花哨的事情。请参阅下面反射器的片段:

protected internal virtual void OnLoad(EventArgs e)
{
    if (this.HasEvents())
    {
        EventHandler handler = this._occasionalFields.Events[EventLoad] as EventHandler;
        if (handler != null)
        {
            handler(this, e);
        }
    }
}

答案 2 :(得分:0)

我错了。确实存在关于遮蔽父类方法的警告,但它只是一个警告,而不是错误。