2013-01-11 192 views
1

我有一個MDI主窗體,一個顯示子窗體的菜單項(我們稱之爲frmEmployees),在此窗體內部爲Button(btnNew ... ),我怎麼從這裏打開一個對話框(frmNewEmployee);我的意思是,frmEmployees不能到達,直到frmNewEmployee已關閉。如何從MDI子窗體(MDI應用程序)打開窗體對話框

// Main_Form_Load 
Main_Form.IsMdiContainer = true; 

在主窗體菜單項,我打開frmEmployees

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

從一個按鈕,我打開了另一種形式

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

是否有任何方法來阻止frmEmployeesfrmNewEmployee方法開了?

在此先感謝!

回答

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(); 
     } 
    } 
} 

基本上我所做是第三種形式frmNE分配給第二形式frmEMP的父,然後使用frmEmp.Hide()來從視圖中隱藏的形式。正如我上面提到的那樣,使用'.ShowDialog()'會強制你的第三個表單變爲模態,因此在執行繼續之前要求它被滿足。

相關問題