+ -
当前位置:首页 → 问答吧 → 子窗体不重复打开和再次打开问题

子窗体不重复打开和再次打开问题

时间:2011-12-15

来源:互联网

问题描述:
我在主窗体F_Main中打开子窗体F_Child,为了不重复打开F_Child,我设置了如下代码:

public static F_Child Frm_Child=null;//首先在F_Main中申明一个全局变量,记录子窗体是否打开;


当主窗体打开子窗体时,作如下判读:

if(Frm_Child=null)

  Frm_Child=new F_Child();
  Frm_Child.mdiparent=this;
  Frm_Child.show;
   
}
else
{
  Frm_Child.Activate();
}

这个代码能够实现子窗体不重复打开。问题是子窗体关闭过后,再打开子窗体时就显示不出来了????请高手指点怎么样实现即可不不重复打开,又可以关闭后再打开???

作者: csliusanpidn   发布时间: 2011-12-15

用 Application.OpenForms 判断是否打开,没有则再创建并打开。

作者: fangxinggood   发布时间: 2011-12-15

在窗体退出时加个事件,当此窗体退出时
public static F_Child Frm_Child=null就OK了

作者: helloadu2010   发布时间: 2011-12-15

引用 2 楼 helloadu2010 的回复:
在窗体退出时加个事件,当此窗体退出时
public static F_Child Frm_Child=null就OK了


一开始我也是这么想的,但是实际上是不行的,没有任何作用。不知道问什么????

作者: csliusanpidn   发布时间: 2011-12-15

主窗体  
if (DialogResult.OK == f.ShowDialog())
  {
  f = null;
  }
子窗体
 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  {
  this.DialogResult = DialogResult.OK;
  }

作者: bdstjk   发布时间: 2011-12-15

// 是否已经打开了?(用循环来判断) 
foreach (Form childrenForm in this.MdiChildren) 

//检测是不是当前子窗体名称 
if (childrenForm.Name == "子窗体名称") 

//是的话就是把他显示 
childrenForm.Visible = true; 
//并激活该窗体 
childrenForm.Activate(); 
return; 

}

作者: woailihuan2   发布时间: 2011-12-15

if(form1!=null&&from1.Created)
{
  form1.TopMost=true;
  form1.Activate();
}
else
{
  form1=new from1();
  from1.TopMost=true;
  from1.MdiParent=this;
  from1.show();
}

作者: Change_L   发布时间: 2011-12-15