2013-03-25 58 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

相关问题