c#中的如何设置 mdi的子窗体只能实例化一次?

解决方案 »

  1.   

    用静态变量public class MIDForm : Form
    {
      private static bool bCreated = false;
      public MIDForm()
      {
         if (bCreated)
         {
           throw new Exception("已经被建过!");
         }else
    {
    bCreated = true;
    }
      }
    }
      

  2.   

    利用singleton的方法。 第一次GetInstance时产生一个实例, 其他的GetInstance返回对象的地址。这样就只有一个对象了
      

  3.   

    /// <summary>
    /// 判断子窗口是否已经打开.
    /// </summary>
    /// <param name="frmName"></param>
    /// <returns>已经打开返回true,否则返回false</returns>
    private bool IfTheFormOpened(string frmName)
    {
    Form[] tmpFrm = this.MdiChildren;
    foreach(Form myFrm in tmpFrm)
    {
    if(myFrm.Name == frmName)
    return true;
    }
    return false;
    }