여러 WinForms가 포함 된 현재 프로젝트를 개발하는 동안 폼의 열기/닫기 이벤트를 처리하기 위해 코드 라인이 혼란 스럽습니다. 현재 나는 그들을 그렇게 취급하고 있습니다 ..일반/재사용 가능한 폼 열기/닫기 이벤트
//Declare forms
myForm mForm1;
myForm2 mForm2;
private void btnSomething_Click(object sender, EventArgs e)
{
if (mForm1 == null)
{
mForm1 = new myForm();
mForm1.FormClosed += new FormClosedEventHandler(mForm1_FormClosed);
mForm1.Show();
}
else
if (mForm1.WindowState == FormWindowState.Minimized)
mForm1.WindowState = FormWindowState.Normal;
mForm1.Focus();
}
void mForm1_FormClosed(object sender, FormClosedEventArgs e)
{
mForm1 = null;
}
그리고 나서 각각의 양식 열기/닫기를 처리하는 또 다른 공백 집합입니다. 이제 2 개의 폼 대신 5 개의 폼이 있다고 상상해보십시오. 이제 나는 더욱 혼란스러워. 모든 양식에 동일한 이벤트 핸들러가 있도록 일반화 할 수있는 방법이 있습니까?
아마도 "as"문에서 객체 발신자를 사용했을 것이라고 생각했지만 거기에서 관련 선언 된 양식 인스턴스를 어떻게 찾을 수 있을지 모르겠습니다.
sender as (form)
아이디어가 있으십니까?
이것은 치료를 할 수 있습니다, 나는 그것을 빨리 체크 아웃 할 것입니다.) –
원래 질문에서 실수했을 수도 있습니다. 내 양식이 모두 myForm 유형이 아닌 경우 어떻게됩니까? 우리는 여전히 일반화 할 수 있습니까? –
예, FormClosed 이벤트가 Form 클래스에 정의 된 이후입니다. 제네릭 메서드는 myForm이 아니라 Form을 받아들입니다 (아마도 Form을 상속받습니다). –