2013-03-25 3 views
0

на родительской форме Mdi Я вызываю свои дочерние формы, используя пункты меню. по форме ребенка Загрузите мой пункт меню должен быть отключен в дочерней форме замкнутость будет снова включено .., я стараюсь FormClosing обработчика событий я получить ответ ..,Включить/отключить подменю в форме Mdi в C# с помощью приложения Windows?

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 кнопок, где каждая кнопка открывает конкретную форму, не так ли?

Если это так, вы можете установить свойство тега для каждой кнопки в форме, которую она открывает. то вам придется перебирать все кнопки и устанавливать событие click. Все кнопки имеют одно и то же событие click. (Давайте назовем его 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

+0

Я думаю, что эта часть вам нужно сделать в ручную. Поэтому присвойте каждой форме кнопке в конструкторе – Tomtom

+0

, где я могу назначить тег в форме mdiparent или в формах – user2173324