所有ASP.NET复合控件的示例都始终将子控件清除为CreateChildControls中的第一个操作。为什么会这样呢?据我所知,这个方法总是通过EnsureChildControls调用的,它会设置一个标志来表明它已经被调用了,因此不会再次调用CreateChildControls。
基础设施的其他方面是否调用了CreateChildControls?如果是这样,在什么情况下?
发布于 2009-12-06 19:29:48
在控件的OnInit期间,没有什么可以阻止您创建控件并将它们添加到控件集合中。然后,当调用CreateChildControls时,已经存在控件。这听起来可能有点奇怪,但是如果您正在扩展一个控件,当您的控件调用基方法(如基构造器或base.OnLoad)时,您知道基控件在做什么吗?
基本上,首先调用Controls.Clear()是一种很好的做法。
https://stackoverflow.com/questions/1854942
复制相似问题