2012-09-06 36 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

相关问题