2010-12-01 5 views
0

부모 페이지에 동적으로로드되는 자식 UserControl이 있습니다.C#의 자식 컨트롤에서 부모 페이지 메서드 호출

ChildControl childcontrol = this.LoadControl("") as ChildControl; 

이 childUserControl의 부모 페이지에있는 메소드 중 하나를 호출해야합니다. 어떻게해야합니까?

감사

+0

WinForms, WPF, ASP.NET, ...? –

+0

ASP.Net'LoadControl'과'Page'에서 추측 할 수 있습니다. – GenericTypeTea

답변

0

캐스트 페이지의 특정 유형으로 컨트롤의 부모 다음 메서드를 호출합니다.

3

페이지에있는 메서드에 의존하는 컨트롤을 작성해서는 안되므로 가장 좋은 방법은 자식 컨트롤의 이벤트를 노출하고 처리하는 것입니다. 당신의 자식 컨트롤에 다음을 추가

public event OnSomethingHandler Something; 
public delegate void OnSomethingHandler(ChildControl sender); 

를 그런 다음, 해당 페이지의 방법을 화재 사건 해고하고자 할 때 :

public void FireParentMethod() 
{ 
    if (Something != null) 
    { 
     Something(this); 
    } 
} 

을 당신이 할 필요가에 이벤트를 처리하다 (다음과 같은 마크 업 또는 코드) 페이지 :

childUserControl.Something+= 
    new ChildControl.OnSomethingHandler(ChildControl_OnSomething); 

그리고 뒤에있는 코드에 처리기를 추가 :

protected void ChildControl_OnSomething(ChildControl sender) 
{ 
    FirePageMethod(); 
} 
+0

그래, 확실히 할 수있는 방법. 그러나 기술적으로 OP가 요구 한 것을 할 수 있습니다. :) –

+1

@Esteban Araya - 당신은 이미 그 대답을주었습니다. 그래서 그것을 복제하는 것은 아무런 의미가 없었습니다. 그러나 차라리 기본 디자인 규칙을 제동하는 데 좋은 습관을 조장하는 답을 제시하고자합니다. – GenericTypeTea

관련 문제