我正在尝试使用我填写的信息返回上一个表单,但是当我单击上一个按钮时,它只会生成一个新的上一个表单。以下是我的代码。有没有办法在没有生成新的先前表单的情况下使用我输入的信息回到之前的表单?感谢。
//moves to next form
public void next()
{
Form3 f4 = new Form3();
f4.Show(this);
Hide();
}
//Moves to previous form
public void Back()
{
Form1 f1 = new Form1();
f1.Show(this);
Hide();
}
答案 0 :(得分:0)
问题:您正在Back()方法中创建Form1
的新实例,因此每次在内存中创建一个新的Form1
实例并向您显示相同的内容而不是通过从内存中取出已显示已填充值(已隐藏)的现有Form1。
解决方案:您可以使用Application.OpenForms[]
获取内存中已有的所需表单。
试试这个:
//Moves to previous form
public void Back()
{
Form myform = (Form1)Application.OpenForms["Form1"];
myform.Show();
}
答案 1 :(得分:0)
您可以使用ShowDialog()而不是Show()来显示表单f4。在表格f2关闭后,这将使执行返回到形式f1。
答案 2 :(得分:0)
In Form2 :
private void button1_Click(object sender, EventArgs e)
{
this.Hide();
formRegistration.ShowDialog();
// We get here when formRegistration's DialogResult gets set
this.Show();
}
答案 3 :(得分:0)
同意@Sudhakar。 替代方法:
public void next()
{
Form3 f4 = new Form3(this);
this.Hide();
f1.BringToFront();
f4.Show();
}
public void Back()
{
Form1 f1 = new Form1(this);
this.Hide();
f1.BringToFront();
f1.Show();
}
另外,在所有表单类和构造函数中添加一些内容:
Form storedPrev;
public Form1(Form prev)
{
this.storedPrev = prev;
}
在表单结束事件处理程序中,添加以下代码:
storedPrev.Show();