假如有3个form,form1,form2.form3.我从1到2,要先new一个2,才能show,从2到3 ,也是这样,我再从3到2 是不是还要new 一个2呢,这样听说就new了2个form2了,产生了副本了,是不是这样的阿,会影响效率吗,如果不想产生副本,我应该怎么做啊,谢谢

解决方案 »

  1.   

    修改2,3的构造函数
    form2=new form2(form1)
    form3=new form3(form2)
      

  2.   

    如果不想产生副本,就在构造函数中采用单件模式,这样,整个系统中,Form就只有一个了。
      

  3.   

    把2隐藏起来,等关闭3的时候在show不行么?
      

  4.   

    修改2,3的构造函数
    form2=new form2(form1)
    form3=new form3(form2)
    =====================================
    麻烦具体点行吗,我是初学者,后面括号里的有什么用啊
    把2隐藏起来,等关闭3的时候在show不行么?
    ==========================================
    好像没有那么简单吧,你在第三个创窗体中来show,没有生成对象怎么show阿,你说调用第一个窗体的show,根本不行,人家不允许访问
      

  5.   

    class form2
    {
        static form2 _instance;
        private form2()
        {
        }    public static form2 Instance
       {
           get{
                 if(_instance = null) instance = new form2
               }
        }
    }form1,form3:
    form2.Instance.Show()
      

  6.   

    可以使用ShowDialog()方法,弹出对话框。
    如果需传数据的话,可以通过一个公共类完成。
      

  7.   

    1,2,3第一次都new一下,以后再显示就别new了,
    不知道你这样做什么目的,如果是实现mdi的话,
    第一次显示时new,以后再显示时只要active一下就可以了
      

  8.   

    将Form放入一个容器中,然后,将容器公开。在容器中找到已有的实例。
      

  9.   

    把2隐藏起来,等关闭3的时候在show不行么?
    ==========================================
    好像没有那么简单吧,你在第三个创窗体中来show,没有生成对象怎么show阿,你说调用第一个窗体的show,根本不行,人家不允许访问
    应该是可以的form1里
    form2 f2 = new form2()
    f2.show();form2里
    from3 f3 = new form3(f2)
    f2.hide();
    f3.show()form3里
    private form2 _form2;构造函数里
    public form3(form2 form)
    {
       _form2 = form;
    }form3关闭的时候
    _form2.Show();
    你试试,应该是行的通的
      

  10.   

    class form2
    {
        static form2 _instance;
        private form2()
        {
        }    public static form2 Instance
       {
           get{
                 if(_instance = null) instance = new form2
               }
        }
    }form1,form3:
    form2.Instance.Show()
    -------------------------------------------------------------
    我用这个方法,自己改了一下,为什么还是有问题 我的代码:
          static LoginedForm _instance;
      //  static LoginedForm instance;
     //   private LoginedForm()  (如果不去掉,会报错)
     //   {
     //   }    public static LoginedForm Instance
       {
           get
           {
               if (_instance.Created == false) //报错:未将对象引用设置到对象的实例
                   _instance = new LoginedForm();
               return _instance;
           }  
           
        }然后我在其他窗体中show,结果报错
      未将对象引用设置到对象的实例
      怎么办
      

  11.   

    instance.Created 值初始化了么? 
    _instance = new LoginedForm();后应该将instance.Created = true
    不用专门弄个变量来记录创建没有,判断_instance == null即可