MDI儿童表格C#

时间:2011-10-19 17:42:48

标签: c# mdichild mdiparent

单击“X”按钮并让父窗体知道它已关闭时,如何检查MDI子窗体的关闭事件?

4 个答案:

答案 0 :(得分:4)

您只需在MDI中收听FormClosed事件即可。

var childForm = new ChildForm();
childForm.FormClosed += new FormClosedEventHandler(form_FormClosed);
childForm.Show();

答案 1 :(得分:0)

在FormClosing事件中,您可以执行

TheMainForm form = (TheMainForm)this.MdiParent()
form.AlertMe( this );

答案 2 :(得分:0)

将一个已关闭的事件从mainForm

中附加到子窗体
Form mdiChild = new Form();
mdiChild.MdiParent = this;
mdiChild.Closed += (s, e) => { //... };
mdiChild.Show();

没有检查代码,但不应该那么难

答案 3 :(得分:0)

以下代码显示了父表单如何识别子表单是否已关闭,并且还可以识别是否有任何新表单添加到该父表单中。

private List<Form> ChildFormList = new List<Form>();

private void MyForm_MdiChildActivate(object sender, EventArgs e)
{
   Form f = this.ActiveMdiChild;

   if (f == null)
   {
    //the last child form was just closed
    return;
   }

   if (!ChildFormList.Contains(f))
   {
      //a new child form was created
      ChildFormList.Add(f);
      f.FormClosed += new FormClosedEventHandler(ChildFormClosed); // here the parent form knows that that child form has been closed or not
  }
  else
  {
    //activated existing form
  }
}
private void ChildFormClosed(object sender, FormClosedEventArgs e)
{
   //a child form was closed
    Form f = (Form)sender;
    ChildFormList.Remove(f);
}