2012-03-14 4 views
1

MDI 부모 폼에 저장 단추가 있고 사용자가이 단추를 클릭 할 때마다 활성 MDI 자식 폼에서 일부 메서드를 호출하고 싶습니다.부모로부터 mdi 자식 메서드 호출

변수에 activemdichild.name이 저장되어 있다고 가정합니다.

string name = this.ActiveMdiChild.Name.ToString(); 

그리고 내 모든 MDI 하위 폼에는 저장 방법이 있습니다.

public void SaveForm() 
{ 
//Some code here 
} 

어떻게 SaveForm 메서드를 프로그래밍 방식으로 호출합니까?

모범 사례가 아니라면 무엇을 제안합니까? MDI 폼 아이들의 유형을 가정

+0

MDI 형태의 유형은 무엇입니까? – JaredPar

+0

'타입'이란 무엇을 의미합니까? public partial class EmpresasView : 폼, IEmpresas ?? –

+0

그게 내가 찾고 있던거야. 내 대답을 업데이트 할게 – JaredPar

답변

2

입니다 MyMdiForm 당신이 할 수있는

foreach (var form in MdiChildren) { 
    var view = form as IEmpresas; 
    if (view != null) { 
    view.SaveForm(); 
    } 
} 
+0

답변 주셔서 감사합니다. Jared, 단 하나의 질문입니다. ActiveMdiChild를 이미 알고 있다면 자녀를 통해 반복 할 필요가 있습니까? –

+0

@JorgeZapata 나는 당신의 질문의 제목을 떠날 것입니다. 액티브 코드를 저장하고 싶다면'ActiveMdiChild' 값에 루프의 내부 코드를 넣을 수 있습니다 – JaredPar

2

에 따라 어떤 아이 양식 사물의 종류 당신이 당신의 MDI 아이들이 구현하는 기대를 정의하는 인터페이스를 구현하는 데에 대해.

예를 들면 :

당신의 MDI 부모 폼에서 다음
IChildWindow 
{ 
    void Save() 
} 

public class MyChildClass : IChildWindow 
{ 
    public void Save() 
    { 
    } 
} 

:

foreach (var child in MdiChildren) 
{ 
    var childAsIWindow = child as IChildWindow; 
    if (childAsIWindow == null) throw new InvalidOperationException("Not a IChildWindow"); 
    // or you could just ignore them. 

childAsIWindow.Save(); 
} 
+0

폼이 이미 IEmpresas를 구현한다는 것을 알지 못했는데 - 그 인터페이스가 Save 메서드를 정의합니까? – quip

+0

예, IEmpresas에는 SaveForm 메서드가 있습니다. –

관련 문제