2013-07-19 1 views
1

하나의 기본 폼이 여러 자식 폼과 함께 존재하는 WindowsFormApplication을 개발 중입니다. 내 양식 중 하나가 보고서를 생성 한 후 보고서 생성의 일부로 호출되는 다른 모든 중간 양식을 닫음으로써 상위 양식을 호출하려고합니다. 사용자가 공통 닫기 버튼 'X'(Windows 운영 체제에서 일반 창을 닫는 데 사용하는 버튼)을 사용하여 보고서를 닫으려고 할 때 상위 창을 호출하려고합니다.보고서 생성 후 상위 창 호출

언제든지 내 하위 양식에서 내 parentform/startupform에 액세스 할 수 있습니까? 및 마지막 양식이 종료되었을 때 기본 양식을 제외한 다른 모든 하위 양식을 닫으려면 어떻게해야합니까? 윈폼 응용 프로그램에서

+0

'최종 보고서'양식을 어떻게 보여 줬습니까? 양식을 어떻게 구성하는지 알고 싶습니다. 예를 들어, 대개 내 메인 폼의 클래스에 내 하위/하위 양식 멤버가 정의되어 있습니다. 그래서 하위 폼을 하위 폼으로 쉽게 보여줄 수 있습니다. –

+0

나는 모든 양식을 개별적으로 작성하고 필요할 때마다 다음과 같은 특정 양식에 오브젝트를 작성하여 호출합니다. 첫 번째 양식. secondform fr = 새 secondform(); fr.show(); – rtvalluri

답변

0

응용 프로그램 개체 사전에

누군가가 나를 도와주세요 .. 덕분에 .. 모든 연 양식에 대한 참조를 포함하는 OpenForms의 컬렉션이 있습니다. 해당 컬렉션에서 폼에 대한 참조를 가져 와서 Close()를 호출하여 해당 컬렉션을 닫을 수 있습니다. 당신이 당신의 최종 형태를 닫을 때 시작 폼을 표시하려면이 코드

foreach (Form f in Application.OpenForms) 
      { 
       if (f.GetType().ToString().Contains("start")) 
        f.Focus(); 
      } 
+0

제발 내게 몇 가지 코드를 제안하십시오 .. 내 시작 양식 이름은 "시작"이며 최종 양식 이름은 "finalreport"입니다 .. "finalreport"양식을 닫을 때 내 시작 양식을 호출하려고합니다. – rtvalluri

+0

시도했지만 시작 양식을 내가 최종 양식을 닫을 때 호출되지 않습니다. ( – rtvalluri

1

를 실행할 수 있습니다 finalreport의 OnClosing 이벤트에 귀하의 코멘트에 또한

는, 당신은 당신의 최종의 이벤트 FormClosed에 대한 이벤트 처리기를 추가 할 수 있습니다 형태 :

FinalForm f = new FinalForm(); 
f.FormClosed += (s,e) => { 
    StartupForm sf = new StartupForm(); 
    sf.Show; 
    //if your StartupForm is defined somewhere 
    //just call sf.Show(); 
}; 
//If you are using VS 2005 or below, you have to define a method for FormClosed event handler (unable to use the lambda expression above 
private void FormClosedHandler(object sender, FormClosedEventArgs e){ 
    StartupForm sf = new StartupForm(); 
    sf.Show; 
    //if your StartupForm is defined somewhere 
    //just call sf.Show(); 
} 
//Register the FormClosed event with the event handler above 
f.FormClosed += new FormClosedEventHandler(FormClosedHandler); 

//show your final form 
f.Show(); 
//if this form is closed, the event FormClosed will be raised and the corresponding event handler (we added above) will be called. 
+0

이 코드에서 s 및 e .. '오류'e 선언되지 않은 메시지가 없습니다. – rtvalluri

+0

@RavitejA VS 2005 이하 사용하고있는 것 같아요 람다 표현식 .' 내가 쓴 'lambda expression'입니다. –

+0

vs2008을 사용하고 있습니다 ... 최종 양식을 닫을 때 이벤트 처리기를 정교하게 만들 수 있습니까? – rtvalluri