2014-02-13 4 views
-1

У меня есть этот код, где я могу закрыть и открыть дочернюю форму с помощью полосы меню. Мой вопрос: как закрыть конкретную активную дочернюю форму, если у меня есть несколько дочерних форм, которые активны?Закрытие активного дочернего mdi

private void fileMenu_Click(object sender, EventArgs e) 
{ 
    frmtview tv = new frmtview(); 
    if (ActiveMdiChild != null) 
    { 
     ActiveMdiChild.Close(); 
    } 
    else 
    { 
     tv.MdiParent = this; 
     tv.Dock = DockStyle.Left; 
     tv.Show(); 
    } 

} 


private void Home_Load(object sender, EventArgs e) 
{ 
    frmtview tv = new frmtview(); 
    tv.MdiParent = this; 
    tv.Dock = DockStyle.Left; 
    tv.Show(); 

} 
+0

Вы хотите закрыть активную дочернюю форму mdi или хотите закрыть конкретную дочернюю форму, которая может быть неактивной? – Shell

+0

Я хочу закрыть конкретную дочернюю форму – arukiri123

+1

, чтобы закрыть форму, вы должны иметь хотя бы объект этой формы или имени формы. если у вас есть имя формы, вы можете закрыть эту форму, вызвав Application.OpenForms ["formName"]. Close(); – Shell

ответ

0

Вы имеете в виду все открытые детские окна? Если это так, при открытии/создании дочернего окна добавьте объект в список <> (переменная-член). при щелчке по меню закрытия просто перетащите все элементы в списке и вызовите метод закрытия.

Список childControls = новый Список();

void Closeclick(.......) 
{ 
    foreach(UserControl uc in childControls) 
    { 
     uc.Close(); 
    } 
} 

void ActivateClick(.......) 
{ 
    HomeForm home = new HomeForm(); 
    childControls.Add(home); 
    home.Show();  
} 
Смежные вопросы