如何实现1窗口关闭,2窗口打开,输入参数后将参数传递到1窗口,并且1窗口原来的状态不变(如原来已经输入的文本、选择的复选框状态不变)而我原来的:
在1窗口:
form2 f2=new form2();
f2.show();
this.hide();在2窗口:
form1 f1=new form1();
f1.show();
this.hide();
结果最后得到的2窗口是全新的,因为用了new form2()。
怎么才能实现如题的效果呢?

解决方案 »

  1.   

    通过一个类来实现:
    Class1:using System;
    using System.Windows.Forms;namespace WindowsApplication1
    {
    public class Class1
    {
    public Class1()
    {
    } protected static Form1 frm1;
    protected static Form2 frm2; [STAThread]
    static void Main() 
    {
    frm1 = new Form1();
    Application.Run(frm1);
    } public static void ShowForm1()
    {
    if(frm1 == null)
    {
    frm1 = new Form1();
    }
    if(frm1.IsDisposed)
    {
    frm1 = new Form1();
    }
    frm1.Show(); } public static void HideForm1()
    {
    if(frm1 != null)
    {
    frm1.Hide();
    }
    if(!frm1.IsDisposed)
    {
    frm1.Hide();
    }
    } public static void ShowForm2()
    {
    if(frm2 == null)
    {
    frm2 = new Form2();
    }
    if(frm2.IsDisposed)
    {
    frm2 = new Form2();
    }
    frm2.Show();
    } public static void HideForm2()
    {
    if(frm2 != null)
    {
    frm2.Hide();
    }
    if(!frm2.IsDisposed)
    {
    frm2.Hide();
    }
    }
    }
    }Form1: //在Form1下Show Form2
    private void button1_Click(object sender, System.EventArgs e)
    {
    Class1.ShowForm2();
    Class1.HideForm1();
    }Form2: //在Form2下show Form1
    private void button1_Click(object sender, System.EventArgs e)
    {
    Class1.ShowForm1();
             Class1.HideForm2();
    }看看是不是你要的效果!!!
      

  2.   

    把你的类做成一个singleton就可以了。因为有了一个静态方法,其他的类就可以调用,比需要用new 来实例化一个新的类。
        Private Shared instance As form1    ''singleton模式
        Public Shared Function getInstance() As form1
            If instance Is Nothing Then
                instance = New form1
            End If
            If instance.IsDisposed Then
                instance = New form1
            End If
            Return instance
        End Function
    其他地方调用时:
    form1.getInstance().show()就可以了