前提:我开发的一个winfrom程序(不是MDI),有窗体A,窗体B需求:在点击窗体A上的按钮时,窗体A隐藏,进入窗体B,在窗体B退出时,窗体A显示。问题:(1)如果使用 this.hide()虽然可以隐藏A窗体,进入B窗体,但如何在显示A呢,如果新实例化A窗体在SHOW的话,那样会产生同时存在两个A窗体的问题(一个是以前被隐藏的显示了,另外一个是新实例化show出来的),所以这个办法不行       (2)不能使用this.close()方法,因为在窗体中chosing事件已经使用。看看大家还有什么好办法没

解决方案 »

  1.   


                this.Visible = false;
                Form2 f = new Form2();
                f.ShowDialog();
      

  2.   

    再加上:
    this.visible=true;就可以解决你的问题了
      

  3.   

     在B的构造函数中把A当参数传递给B,然后在B退出的时候调用A.SHOW()
      

  4.   

    方法多了,这对于只有两个FORM是比较方便的,也可以用集合阿~委托啊
      

  5.   

    Form1.Visible = false;
    Form2 f = new Form2();
    if(f.ShowDialog() == DialogResult.OK)
    {
     Form1.Visible = true;
    }
      

  6.   

    你们说的方法都不行,如果Form1.Visible = false;多开的话它还是占用系统资源,我这开发的是给予wince的程序,本来PDA内存就小,而且都没看清我问的,我在关闭B窗体的时候A如何才能显示呢,如果用show那么以前隐藏的也会出现,这时就又两个A窗体了
      

  7.   

    返回值已经获得
    if(f.ShowDialog() == DialogResult.OK)
      

  8.   


    1. 如果你的B form所做的值改变不需返回至A中使用,上面的代码就可以实现功能。
    2. 如果B form 所做的值改变需要返回至A中使用,建议使用类传递或者全局变量.当然以上写法的前提:你要把Form B的DialogResult属性进行设置。
      

  9.   

    你可以定义一个类,专门用来放置公共变量,在这个类中定义A窗体和B窗体,但不要初始化B,单击A窗体按钮时,初始化B窗体,隐藏A。