While it seems that the \"right\" way to make a server control is to construct all child controls inside CreateChildControls call. But since it\'s difficult to know when it
Read Control Execution Lifecycle
The CreateChildControls method is called whenever the ASP.NET page framework needs to create the controls tree and this method call is not limited to a specific phase in a control's lifecycle. For example, CreateChildControls can be invoked when loading a page, during data binding, or during rendering.