-1

我有一个用 C# 编码的应用程序,在第一个窗口中,我在文本框、组合框、单选按钮和复选框中输入了一些详细信息。当我单击下一步按钮时,它会转到第二个窗口,为此,我使用:

form2 f2 = new form2();
f2.show();
this.hide();

在第二个窗口中,我有一个后退按钮,单击该按钮后会转到第一个窗口。为此,我使用以下代码:

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

但问题是,当我进入那个窗口时,我丢失了所有输入的数据。有没有一种简单的方法可以将这些数据重新输入到相关控件中而无需再次设置它们?

4

3 回答 3

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();

        }

       }
    }
于 2012-08-05T21:25:44.180 回答
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
于 2012-08-05T20:51:16.127 回答
0

当您这样做时form1 f1 = new form1();,您正在创建 的实例form1,并且将显示实例,而不是现有实例。

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

于 2012-08-05T20:51:54.927 回答