好象不用这么麻烦吧,判断FORM类是否有实例就可以了吧

解决方案 »

  1.   

    如果你的窗体都是从form继承的,你写成
    private void checkChildFrmExist2(string childFrmName,  Form frmName)
            {
                foreach (Form midForm in this.MdiChildren)
                {
                    if (midForm.Name == childFrmName)
                    {
                        if (midForm.WindowState == FormWindowState.Minimized)
                        {
                            midForm.WindowState = FormWindowState.Normal;
                        }
                        midForm.Activate();
                    }
                    else
                    {
                       Form frmName = new Form();
                       frmName.Name=childFrmName;
                       frmName .MdiParent = this;
                       frmName .Show();
                    }
                }
            }
      

  2.   

    参考一下
    Assembly.CreateInstance 方法 
      

  3.   

    不用这么麻烦的,
            Form2 form1 = null;
            private void button8_Click(object sender, EventArgs e)
            {
                
                if (form1 == null || form1.IsDisposed)
                {
                    form1 = new Form2();
                    form1.Show();
                }
                else
                {
                    form1.BringToFront();
                }             //form.Show();
            }
      

  4.   

    谢谢lljfl(Dos)回复我的问题,但您给我的代码可能也有问题哦,在Form frmName = new Form()的这段代码中,就会出现错误,提示是:错误 1 不能在此范围内声明名为“frmName”的局部变量,因为这样会使“frmName”具有不同的含义,而它已在“父级或当前”范围中表示其它内容了
    另一个问题是我的新窗体不是"Form"中产生的,而是由我新写的"Form3"中创建的,"Form3"有可能也会变化,可能是"Form4,Form5"等,所以我也要把他变成一个参数传进来,谢谢!