天天看点

在winform中,MDI窗体不能打开重复窗体

在父窗口中查找子窗口是否存在,如果不存在,则显示,如果存在,则不显示,函数如下:  

  #region   寻找子窗口是否已经存在  

  ///   <summary>  

  ///   寻找子窗口是否已经存在  

  ///   </summary>  

  ///   <param   name="frmShow">要显示的子窗口</param>  

  ///   <param   name="frmParent">要显示窗口的父窗口,通常该窗口为Mdi型</param>  

  ///   <returns>返回是否找到   false:没有找到   true:找到了</returns>  

  #endregion  

  public   static   bool   IsFormExist(   Form   frmParent,   Form   frmShow   )  

  {  

  //如果不是MDI  

  if(   !frmParent.IsMdiContainer   )  

  {  

  return   true;  

  }  

  //如果没有子窗口  

  if(   frmParent.MdiChildren.Length   ==   0)  

  return   false;  

  //如果是焦点  

  if(   frmParent.ActiveMdiChild.GetType().ToString()   ==   frmShow.GetType().ToString()   )  

  return   true;  

  //存在但不是焦点  

  foreach(Form   frm   in   frmParent.MdiChildren)  

  {  

  if(frm.GetType().ToString()   ==   frmShow.GetType().ToString())  

  {  

  //获得焦点  

  frm.Focus();  

  return   true;  

  }  

  }  

  return   false;  

  } 

继续阅读