我如何知道新的 MDI 表单添加到父 MDI 表单中?
How can i know new MDI form added into parent MDI form?
我创建了一个父窗体并为此引发了 ControlAdded 事件。并且还将此父窗体的 属性 IsMdiContainer 设置为 true。然后,如果我创建一个名为 ChildForm1 和 ChildForm2 的新表单,如下代码所示,
public partial class ParentForm : Form
{
public ParentForm()
{
InitializeComponent();
this.ControlAdded += Form1_ControlAdded;
this.IsMdiContainer = true;
Form ChildForm1 = new Form();
ChildForm1.MdiParent = this;
ChildForm1.Show();
Form ChildForm2 = new Form();
ChildForm2.MdiParent = this;
ChildForm2.Show();
}
void Form1_ControlAdded(object sender, ControlEventArgs e)
{
MessageBox.Show("Control Added" + e.Control.Name);
}
}
在上面的代码中,在将子窗体添加到父窗体时调试代码时,它不会引发 ControlAdded 事件。那么,您能否提出任何实现此目标的方法?
我找到了这个问题的答案。当通过将 IsMdiContainer 设置为 true 将 ParentForm 标记为 MdiContainer 时,将引发 ParentForm.ControlAdded 事件以将 "MdiClient" 控件添加到父窗体。因此,当将 MdiClient 添加到父 MDI 窗体时,我们可以引发 MdiClient 控件的 ControlAdded 事件,如下所示,
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 子窗体被添加到父窗体中 MdiClient 的控件集合中。因此,当将 ChildForm.MdiParent 值设置为父表单时,MdiClient 的 ControlAdded 事件将引发 。
void MdiClient_ControlAdded(object sender, ControlEventArgs e)
{
}
所以通过上面的方法,我们可以知道添加到父MDI窗体中的子MDI窗体。
我创建了一个父窗体并为此引发了 ControlAdded 事件。并且还将此父窗体的 属性 IsMdiContainer 设置为 true。然后,如果我创建一个名为 ChildForm1 和 ChildForm2 的新表单,如下代码所示,
public partial class ParentForm : Form
{
public ParentForm()
{
InitializeComponent();
this.ControlAdded += Form1_ControlAdded;
this.IsMdiContainer = true;
Form ChildForm1 = new Form();
ChildForm1.MdiParent = this;
ChildForm1.Show();
Form ChildForm2 = new Form();
ChildForm2.MdiParent = this;
ChildForm2.Show();
}
void Form1_ControlAdded(object sender, ControlEventArgs e)
{
MessageBox.Show("Control Added" + e.Control.Name);
}
}
在上面的代码中,在将子窗体添加到父窗体时调试代码时,它不会引发 ControlAdded 事件。那么,您能否提出任何实现此目标的方法?
我找到了这个问题的答案。当通过将 IsMdiContainer 设置为 true 将 ParentForm 标记为 MdiContainer 时,将引发 ParentForm.ControlAdded 事件以将 "MdiClient" 控件添加到父窗体。因此,当将 MdiClient 添加到父 MDI 窗体时,我们可以引发 MdiClient 控件的 ControlAdded 事件,如下所示,
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 子窗体被添加到父窗体中 MdiClient 的控件集合中。因此,当将 ChildForm.MdiParent 值设置为父表单时,MdiClient 的 ControlAdded 事件将引发 。
void MdiClient_ControlAdded(object sender, ControlEventArgs e)
{
}
所以通过上面的方法,我们可以知道添加到父MDI窗体中的子MDI窗体。