간단한 문제가 있습니다 : 저는 win-forms/C#에 메인 폼이 있습니다. 그것은 데이터베이스에 바인딩 된 목록 상자가 있습니다.하위 폼에서 주 폼 액세스하기
버튼을 클릭하면 새 양식이 만들어집니다.
하위 폼의 단추를 클릭하면 기본 폼에있는 메서드를 호출하거나 자식 폼이 닫힐 때 목록 상자를 업데이트하거나 해당 함수를 호출하는 메서드를 호출하려고합니다.
가능합니까 ??
간단한 문제가 있습니다 : 저는 win-forms/C#에 메인 폼이 있습니다. 그것은 데이터베이스에 바인딩 된 목록 상자가 있습니다.하위 폼에서 주 폼 액세스하기
버튼을 클릭하면 새 양식이 만들어집니다.
하위 폼의 단추를 클릭하면 기본 폼에있는 메서드를 호출하거나 자식 폼이 닫힐 때 목록 상자를 업데이트하거나 해당 함수를 호출하는 메서드를 호출하려고합니다.
가능합니까 ??
시나리오 1 : 하위 폼의 단추를 클릭 할 때 부모 양식의 메서드를 호출하십시오.
하위 양식에 Event
을 만듭니다. 버튼 클릭 등에서 해당 이벤트를 발생시킵니다. 상위 이벤트의 해당 이벤트를 구독하고 그 이벤트의 상위 폼의 메소드를 호출하십시오.
시나리오 2 : 자식 폼이 닫힐 때 부모 폼의 메서드를 호출하십시오.
부모 양식의 자식 양식에 FormClosed
또는 FormClosing
이벤트를 처리하고 그 안에 부모 양식 메서드를 호출하십시오.
ChildForm frm = new ChildForm();
frm.FormClosed += new FormClosedEventHandler(frm_FormClosed);
void frm_FormClosed(object sender, FormClosedEventArgs e)
{
//Call your method here.
}
최고 ... 감사합니다 –
여기에는 여러 가지 방법이 있지만 여기에는 간단한 방법이 있습니다. 당신이 자식 폼을 생성하고 표시 할 때 기본 폼에, 이런 식으로 작업을 수행합니다
ChildForm child = new ChildForm();
child.Show(this); // this calls the override that takes Owner parameter
을 그런 다음 자식 폼의 기본 폼의 메소드를 호출 할 필요가있을 때,이 같은 코드를 사용는 (가정 귀하의 기본 양식 유형 MainForm
)이다 :
MainForm parent = (MainForm)this.Owner;
parent.CallCustomMethod();
더 복잡한 방법으로 당신은 그것의 인터페이스, 더 제대로 부모 폼에 대한 참조를 전달 (또는 할 경우 의존성 주입의 양식을 사용하는 것입니다) 자식 폼의 생성자에서. 그러나 위의 방법은 간단하고 아마도 당신의 목적에 충분히 효과적 일 것입니다 (실제로는 은 일종의 의존성 삽입 형태입니다).
당신은 또한'ShowDialog (this);'를 사용할 수도 있습니다 -이 코드는 똑같은 방식으로 작동합니다. – MusiGenesis
'Save' 및'apply' 버튼이 포함 된 대화 상자를 구현하려고합니까? – manji