【发布时间】:2011-07-25 16:34:40
【问题描述】:
我希望 MDI 父级仅加载一次某些表单。因此,在 menuitem 的单击事件中,我查看 MDI 父级的 .Children 属性是否已包含表单,并且仅当表单不在子级中时才加载该表单:
bool alreadyLoaded = false;
if (this.MdiChildren.Length > 0)
{
foreach (Form frm in this.MdiChildren)
{
if (frm.Name == "foo")
{
alreadyLoaded=true;
break;
}
}
}
if (! alreadyLoaded)
{
FOO f = new FOO();
f.MdiParent=this;
f.Show();
}
但是如果不耐烦的用户在第一次加载表单时快速单击菜单项,则可以多次加载它。在第一次单击加载的实例完全实例化之前,第二次和第三次单击菜单项会启动表单的新副本。
我想我可以维护我自己的已启动表单名称列表,并在菜单项的单击事件处理程序中,将表单名称添加到列表中(如果它尚不存在),然后将其从子表单的已关闭列表中删除事件处理程序。但是有没有更好的方法?
【问题讨论】: