Если пометить ParentForm как MdiContainer, установив для IsMdiContainer значение true, событие ParentForm.ControlAdded возникает для добавления элемента управления «MdiClient» в родительскую форму.Таким образом, при добавлении MdiClient в родительскую форму MDI, мы можем вызвать событие ControlAdded для элемента управления MdiClient , как показано ниже,
public ParentForm()
{
InitializeComponent();
this.ControlAdded += Form1_ControlAdded;
this.IsMdiContainer = true;
. Нам нужно вызвать MdiClient.ControlAdded, как показано ниже.,
void Form1_ControlAdded(object sender, ControlEventArgs e)
{
if(e.Control is MdiClient)
e.Control.ControlAdded += MdiClient_ControlAdded;
}
По умолчанию формы MDI Child добавляются в коллекцию элементов управления MdiClient в родительской форме.Поэтому, если установить значение ChildForm.MdiParent в качестве родительской формы, событие ControlAdded для MdiClient будет вызывать .
void MdiClient_ControlAdded(object sender, ControlEventArgs e)
{
if (e.Control is Form)
{
var form = e.Control as Form;
form.FormClosing += form_FormClosing;
form.FormClosed += form_FormClosed;
}
}
В этом выше метод MdiClient_ControlAdded возникает, когда дочерняя форма добавляется в родительскую форму MDI.Поэтому, вызывая события FormClosing и FormClosed для дочерних форм, вы можете легко определить, является ли дочерняя форма закрытой или нет.