2012-08-05 25 views
-2

我有一个用C#编码的应用程序,在第一个窗口中我在文本框,组合框,单选按钮和复选框中输入了一些细节。当我点击下一步按钮,它关系到第二个窗口,要做到这一点,我用:当点击返回按钮时,将数据返回到prevoius窗口

form2 f2 = new form2(); 
f2.show(); 
this.hide(); 
在第二窗口

,我有一个返回按钮,点击它时,去第一个窗口。要做到这一点,我使用的代码:

form1 f1 = new form1(); 
f1.show(); 
this.hide(); 

但事情是,当我去那个窗口,我失去了我输入的所有数据。有没有一种简单的方法可以将这些数据恢复到相关的控制,而无需再一次设置它们?

+0

我假设你正在谈论的WinForms,而不是WPF,可以确认? – Oded 2012-08-05 20:49:00

+2

'form2 f1 = new form1();'?真?这编译? – Oded 2012-08-05 20:49:31

+0

它是Winforms。对不起,那是一个错误。它应该是form1 f1 = new form1(); f1.show(); this.hide(); – aroshlakshan 2012-08-05 20:51:02

回答

1

考虑第一种形式,如果你想显示第二种形式

public partial class Form1 : Form 
    { 
Form2 frm; 
    public Form1() 
    { 
     InitializeComponent(); 
     frm = new Form2(this); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 

     this.Hide(); 
     frm.Show(); 
    } 
现在

对于第二种形式

public partial class Form2 : Form 
    { 
     Form1 frm; 
     public Form2(Form1 fr) 
     { 
      InitializeComponent(); 
      frm = fr; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      this.Hide(); 
      frm.Show(); 

     } 

     } 
    } 
+0

明白了。奇迹般有效。谢谢! – aroshlakshan 2012-08-05 22:00:16

+0

这是不好的做法 - 你现在已经把表格连接起来了。 – Oded 2012-08-06 08:53:58

+0

@ oded,我知道,但aroshlakshan没有得到你的观点。这就是为什么我提供了一个简单的(根据你的不良做法)的例子。 – 2012-08-06 09:55:11

0

的问题是,你正在创建Form1的一个新实例:

Form1 f1 = new Form1(); 
f1.Show(); 
this.Hide(); 

你需要保持的参考以某种方式(例如通过Form1中作为参数传递给窗体2的构造函数),然后调用 - 从窗体2 :

public class Form2 { 
     private Form1 nextWindow=null; 
     public Form2(Form1 form1) { 
      nextWindow=form1; 
     } 
} 

而且地方在Form2的代码......

nextWindow.Show(); 
this.Hide(); //Form2 
+1

事件可能是一个更好的选择,避免了两个窗口之间的耦合。 – Oded 2012-08-05 20:53:09

+0

你可以请精心制作的家伙,我不明白。抱歉!! – aroshlakshan 2012-08-05 20:56:45

+0

@aroshlakshan我已经更新了我的答案。我希望现在更清楚。 – Icarus 2012-08-05 21:00:10

0

当你做form1 f1 = new form1();,您正在创建一个新的实例form1,并将显示新的实例,而不是现有实例。

您的form2应引发form1订阅的事件,并在单击后退按钮时触发该事件。 form1上的事件处理程序将调用this.Show()

+0

你能提供一个简单的代码示例吗? – aroshlakshan 2012-08-05 21:00:18