Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MDI子表单C#_C#_Mdichild_Mdiparent - Fatal编程技术网

MDI子表单C#

MDI子表单C#,c#,mdichild,mdiparent,C#,Mdichild,Mdiparent,当单击“X”按钮并让父窗体知道它已关闭时,如何检查MDI子窗体的关闭事件 在FormClosing事件表单中,您可以执行 TheMainForm form = (TheMainForm)this.MdiParent() form.AlertMe( this ); 在FormClosing事件表单中,您可以执行以下操作 TheMainForm form = (TheMainForm)this.MdiParent() form.AlertMe( this ); 您只需在MDI中侦听FormClo

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

在FormClosing事件表单中,您可以执行

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

在FormClosing事件表单中,您可以执行以下操作

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

您只需在MDI中侦听FormClosed事件

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

您只需在MDI中侦听FormClosed事件

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

将已关闭事件从主窗体中附加到子窗体

Form mdiChild = new Form();
mdiChild.MdiParent = this;
mdiChild.Closed += (s, e) => { //... };
mdiChild.Show();

未检查代码,但不应太难

从主窗体中将关闭的事件附加到子窗体

Form mdiChild = new Form();
mdiChild.MdiParent = this;
mdiChild.Closed += (s, e) => { //... };
mdiChild.Show();

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

好吧,下面的代码显示了父窗体如何识别子窗体是否已关闭,并且它还可以识别是否有任何新的子窗体添加到该父窗体中

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);
}
private List ChildFormList=new List();
私有void MyForm_MdiChildActivate(对象发送方,事件参数e)
{
Form f=this.ActiveMdiChild;
如果(f==null)
{
//最后一个子表单刚刚关闭
返回;
}
如果(!ChildFormList.Contains(f))
{
//创建了一个新的子窗体
子表单列表。添加(f);
f、 FormClosed+=新FormClosedEventHandler(ChildFormClosed);//这里父窗体知道该子窗体是否已关闭
}
其他的
{
//激活现有表单
}
}
私有void ChildFormClosed(对象发送方,FormClosedEventArgs e)
{
//子窗体已关闭
表格f=(表格)发送者;
ChildFormList.Remove(f);
}

下面的代码显示了父窗体如何识别子窗体是否已关闭,并且还可以识别是否有任何新的子窗体添加到父窗体中

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);
}
private List ChildFormList=new List();
私有void MyForm_MdiChildActivate(对象发送方,事件参数e)
{
Form f=this.ActiveMdiChild;
如果(f==null)
{
//最后一个子表单刚刚关闭
返回;
}
如果(!ChildFormList.Contains(f))
{
//创建了一个新的子窗体
子表单列表。添加(f);
f、 FormClosed+=新FormClosedEventHandler(ChildFormClosed);//这里父窗体知道该子窗体是否已关闭
}
其他的
{
//激活现有表单
}
}
私有void ChildFormClosed(对象发送方,FormClosedEventArgs e)
{
//子窗体已关闭
表格f=(表格)发送者;
ChildFormList.Remove(f);
}

C中没有.AlertMe()方法,我找不到MDiParent方法,只有属性。您可以创建自己的,并将其公开C中没有.AlertMe()方法,我找不到MDiParent方法,只有属性。您可以创建自己的,并将其公开