世间的事情很奇妙,不了解的,自己半天找不到解决方法,而对于接触过的,再难也有方案去解决。
今天对MDI窗口的相关知识在这里做个笔记:
1、父窗口的定义
设置IsMdiContainer属性为true则可。
2、子窗口的显示
子窗口有制作时不用设置特定的属性,只需要在显示之前设置下子窗口的容器窗口则可,如:
frmChild child = new frmKeyword();
child.MdiParent = this;
child.Show();
如上显示窗口,则child会有child.MdiParent内显示,但如果多次调用这段代码,则会有N个窗口出现。如果希望多次调用都是同一个窗口怎么办?这里需要用到单态模式了。如,我们需要在frmChild窗体代码中定义如下方法:
private static frmChild propForm = null;
public static frmChild CreateForm()
{
if (propForm == null)
{
propForm = new frmChild();
}
return frmChild;
}
private frmChild()
{
InitializeComponent();
}
这里定义了一个静态的propForm属性,用于保存CreateForm()生成的结果。并把构造属性声明为private。这样,显示方法相应的更改为:
frmChild child= frmChild.CreateForm();
child.MdiParent = this;
child.Show();