-1

C#でコーディングされたアプリケーションがあり、最初のウィンドウで、テキストボックス、コンボボックス、ラジオボタン、およびチェックボックスに詳細を入力します。[次へ]ボタンをクリックすると、2番目のウィンドウに移動します。これを行うには、次を使用します。

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

その2番目のウィンドウには、[戻る]ボタンがあり、クリックすると最初のウィンドウに移動します。これを行うには、次のコードを使用します。

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

ただし、そのウィンドウに移動すると、入力したすべてのデータが失われます。コントロールを1つずつ設定せずに、このデータを関連するコントロールに戻す簡単な方法はありますか?

4

3 に答える 3

1

2番目のフォームを表示する場合は、最初のフォームを検討してください

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

今2番目のフォーム

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 に答える