2013-03-25 24 views
0

在Mdi的父母形式我打電話給我的孩子形式使用菜單項。子窗體上加載我的菜單項應子窗體上禁用關閉,這將再次啓用..,我嘗試的FormClosing事件處理程序,我得到的答案..,在C#中使用Windows應用程序在Mdi父窗體上啓用/禁用子菜單項?

private void btnMn1_Click(object sender, EventArgs e) 
    { 
     Forms.Cnblfrm cnbfrm = new Cnsmblfrm(); 
     cnsmbfrm.MdiParent = this; 
     cnsmbfrm.Text = btnMn1.Text; 
     cnsmbfrm.Show(); 
     this.btnMn1.Enabled = false; 
     cnbfrm.FormClosed += new FormClosedEventHandler(cnsmbfrm_FormClosed); 
    } 

    void cnbfrm_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     btnMn1.Enabled = true; 
     //throw new NotImplementedException(); 
    } 

通過上面的代碼我得到的答案但我有超過20個ChildForms。通過使用這種方法我的編碼在增加......,有什麼方法,而不是這個......,

回答

3

如果我理解你的權利:你有,每一個按鈕打開一個特定形式的20個按鍵,對不對?

如果是這樣,你可以設置每個按鈕,將它打開表單的標籤屬性。那麼你必須迭代所有的按鈕並設置點擊事件。所有按鈕都具有相同的點擊事件。 (姑且稱之爲btn_click)

btn_click的代碼可以是這樣的:

private void btn_click(object sender, EventArgs e) 
{ 
    Button button = sender as Button; 
    if(button == null) 
     return; 
    Form form = button.Tag as Form; 
    if(form == null) 
     return; 
    form.MdiParent = this; 
    form.Text = button.Text; 
    form.Show(); 
    button.Enabled = false; 
    form.Tag = button; 
    form.FormClosed += FormClosed; 
} 

private void FormClosed(object sender, FormClosedEventArgs e) 
{ 
    Form form = sender as Form; 
    if(form == null) 
     return; 
    Button button = form.Tag as Button; 
    if(button == null) 
     return; 
    button.Enabled = true; 
} 
+0

我怎麼可以設置標籤爲每個表單 – user2173324 2013-03-25 12:39:05

+0

我覺得這個部分,你必須manualy做。因此,每形式分配給該按鈕在構造 – Tomtom 2013-03-25 12:45:25

+0

其中至i中的MdiParent形式或形式 – user2173324 2013-03-25 12:52:56

相關問題