为什么在CreateChildControls中清除控件

时间:2009-12-06 10:02:47

标签: asp.net webforms createchildcontrols

ASP.NET复合控件的所有示例始终将子控件清除为CreateChildControls中的第一个操作。为什么是这样?据我所知,这个方法总是通过EnsureChildControls调用,它设置一个标志来表明它已被调用,因此不再调用CreateChildControls。

CreateChildControls是否被基础架构的其他方面调用?如果是这样的话?

1 个答案:

答案 0 :(得分:0)

在控件的OnInit期间,没有什么可以阻止您创建控件并将它们添加到控件集合中。然后,当调用CreateChildControls时,已存在控件。这可能听起来很古怪,但是如果你扩展一个控件,当你的控件调用基本方法(比如基本构造函数或base.OnLoad)时,你知道基本控件正在做什么吗?

基本上,首先调用Controls.Clear()是一种很好的做法。