2009-12-06 3 views
1

ASP.NET 컴포지트 컨트롤의 모든 예제는 항상 CreateChildControls 내의 첫 번째 동작으로 자식 컨트롤을 지 웁니다. 왜 이런거야? 내가 알기로이 메서드는 항상 EnsureChildControls를 통해 호출됩니다.이 메서드는 이미 호출되었으므로 CreateChildControls를 다시 호출하지 않음을 나타내는 플래그를 설정합니다.CreateChildControls의 컨트롤을 지우는 이유

인프라의 다른 측면에서 CreateChildControls를 호출합니까? 그렇다면 어떤 상황에서?

답변

0

컨트롤을 만들고 컨트롤의 OnInit 중에 컨트롤 컬렉션에 추가하는 것을 막을 수있는 방법은 없습니다. CreateChildControls가 호출되면 이미 컨트롤이 있습니다. 이상하게 들릴지도 모르지만 컨트롤을 확장하는 경우 컨트롤에서 기본 메서드 (기본 생성자 또는 base.OnLoad 같은)를 호출 할 때 해당 기본 컨트롤이 수행중인 작업을 알 수 있습니까?

기본적으로 Controls.Clear()를 먼저 호출하는 것이 좋습니다.