2012-09-06 37 views
0

我正在學習有關Web部件,在一個點上的教程說做在Page_Init如下:爲什麼要爲Page.InitComplete添加額外的事件處理程序?

Page.InitComplete += new EventHandler(GenerateModeList); 

的教程進行定義GenerateModeList其中的項目列表添加到一個DropDownList。該列表將包含支持的顯示模式。

在我看來,定義GenerateModeList方法並從Page_InitComplete調用它會更簡單。

爲什麼我要添加一個額外的事件處理程序?

回答

1

可能是「GenerateModeList」方法需要訪問已初始化的控件(如DropDownList)。頁面上的控件尚未初始化爲Page.Init

見關於Page.InitComplete事件的文檔:

在這個階段頁面的生命週期,頁面上的所有聲明的控件初始化的,但是頁面的狀態尚未填充。您可以訪問服務器控件,但它們不會包含用戶返回的信息。

+0

正如我所說,列表中填充了支持的顯示模式。但添加一個事件處理程序與我的問題中描述的只是從Page.InitComplete手動調用該事件處理程序之間有任何真正的區別? GenerateModeList方法不需要任何交給它的參數(對象源,EventArgs參數)。作者可能已經將它定義爲沒有參數,從Page.InitComplete中調用它,並且所有內容都可以工作。 – Robotron

+1

@robotron我誤解了你。我同意你的看法,也看不出有什麼理由;也許作者更喜歡明確地綁定事件(出於教育學或編碼標準的原因),而不是依靠自動事件連接(http://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection。 autoeventwireup.aspx)。 – McGarnagle

相關問題