2013-01-11 3 views
1

MDI 기본 폼,이 양식 안의 자식 폼을 나타내는 메뉴 항목 (frmEmployees) Button (btnNew ...)이 있습니다.), 어떻게 대화 상자 (frmNewEmployee)와 같은 양식을 열 수 있습니까? 즉 frmNewEmployee이 폐쇄 될 때까지 frmEmployees에 도달 할 수 없습니다.MDI 자식 폼 (MDI 응용 프로그램)에서 양식 대화 상자를 여는 방법

주요 형태의 메뉴 항목에서
// Main_Form_Load 
Main_Form.IsMdiContainer = true; 

, 나는 frmEmployees 동안 frmNewEmployee을 차단하기 위해 어떤 방법이 있나요 나는 또 다른 형태

// newButton_Click 
frmNewEmployee frmNE = new frmNewEmployee(); 
frmNE.MdiParent = this.MdiParent; 
//frmNE.Show();  // OK, but allows return to frmEmployees 
frmNE.ShowDialog(); // here comes the problem 

을 열고 버튼에서 frmEmployees

// MenuItem_Click 
frmEmployees frmEmp = new frmEmployees(); 
frmEmp.MdiParent = this; 
frmEmp.Show(); 

을 엽니 다 열려 있니?

미리 감사드립니다.

답변

4

frmNE.mdiParent를 설정하지 마십시오. 인스턴스를 frmEmployees의 자식으로 둡니다. 다시 말하면 mdiParent 속성을 설정하지 말고 frmNE.ShowDialog()를 호출하면 차단 된 양식은 frmEmployee가됩니다. 내가 한 본질적으로 무엇을

0
namespace ModalTest 
{ 
    using System; 
    using System.Windows.Forms; 

    public partial class frmMain : Form 
    { 
     frmEmployees frmEmp = new frmEmployees(); 
     frmNewEmployee frmNE = new frmNewEmployee(); 

     public frmMain() 
     { 
      InitializeComponent(); 
      IsMdiContainer = true; 
     } 

     private void btnGo_Click(object sender, EventArgs e) 
     { 
      frmEmp.MdiParent = this; 
      frmEmp.Show(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      frmNE.MdiParent = frmEmp.MdiParent; 
      frmEmp.Hide(); 
      frmNE.Show(); 
     } 
    } 
} 

이 두 번째 양식 frmEMP의 부모에게 세 번째 형태 frmNE을 지정하고, 다음보기에서 양식을 숨길 frmEmp.Hide()를 사용합니다. 앞서 언급 한 '.ShowDialog()'를 사용하면 세 번째 형식이 모달이되므로 실행을 계속하기 전에 만족되도록해야합니다.