2012-04-13 13 views
0

我有一個基本控制體REF錯誤:BASECONTROL Page.LoadComplete - = Page_LoadComplete引發如果子控制加載不止一次

public partial class BaseControl : System.Web.UI.UserControl 
{ 
    protected virtual void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     Page.LoadComplete += Page_LoadComplete; 
    } 

    protected virtual void Page_LoadComplete(object sender, EventArgs e) 
    { 
     Page.LoadComplete -= Page_LoadComplete; 
    } 
} 

我然後具有從這個

public partial class MyChildControl : BaseControl 
派生的控制

我的問題是,如果我加載多於一次MyChildControl然後我得到Page.LoadComplete -= Page_LoadComplete;BaseControl對象ref錯誤。我有點明白爲什麼,但我有2個問題:

  1. 應該不是每個MyChildControl參考它自己版本的BaseControl這反過來又註冊它自己的PageLoadComplete
  2. 如何檢查它是否不爲空?我似乎無法做!= null

編輯:看來Page爲空和檢查Page != null解決了問題,但我還是不明白怎麼Page爲空。

+1

「Page_LoadComplete」不能爲null,它只是爲methog Page_LoadComplete創建的委託。所以我認爲'Page.LoadComplete'中的頁面可能爲null,或者頁面具有用於向事件LoadComplete添加處理程序的自定義邏輯,並且在那裏有ref錯誤。 – Nikolay 2012-04-13 10:16:26

+0

好吧,似乎是這樣的,因爲檢查'Page!= null'似乎將其排序。我只能假設我將某個地方的頁面置爲空。然後看。 – webnoob 2012-04-13 10:18:40

+0

@尼科萊 - 你可以張貼您的評論作爲答案請。這解決了我的問題,儘管讓我有點困惑:) – webnoob 2012-04-13 14:31:17

回答

2

Page_LoadComplete不能爲空,它只是爲方法Page_LoadComplete創建的代理。所以我認爲Page.LoadComplete中的頁面可能爲null或者頁面具有用於向事件LoadComplete添加處理程序的自定義邏輯,並且存在ref錯誤

相關問題