我有一个用C#编码的应用程序,在第一个窗口中我输入了文本框,组合框,单选按钮和复选框中的一些细节。当我点击Next按钮时,它会转到第二个窗口,为此,我使用:
form2 f2 = new form2();
f2.show();
this.hide();
在第二个窗口中,我有一个Back按钮,点击后进入第一个窗口。为此,我使用代码:
form1 f1 = new form1();
f1.show();
this.hide();
但问题是,当我进入那个窗口时,我丢失了所有输入的数据。是否有一种简单的方法可以将这些数据重新用于相关控件而无需逐一设置它们?
答案 0 :(得分: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();
}
}
}
答案 1 :(得分:0)
问题是您正在创建Form1的新实例:
Form1 f1 = new Form1();
f1.Show();
this.Hide();
您需要以某种方式保留引用(例如将form1作为参数传递给Form2的构造函数),然后从Form2调用 -
public class Form2 {
private Form1 nextWindow=null;
public Form2(Form1 form1) {
nextWindow=form1;
}
}
在Form2的代码中某处...
nextWindow.Show();
this.Hide(); //Form2
答案 2 :(得分:0)
执行form1 f1 = new form1();
时,您正在创建form1
的新实例,并将显示新实例,而不是现有实例之一。
您的form2
应该引发form1
订阅的事件以及单击后退按钮时被触发的事件。 form1
上的事件处理程序将调用this.Show()
。