2

「新しい項目の追加」を使用して、C# で 2 つのフォームを作成しました。Form1 は私のデフォルトの開始フォームです。次のコードを使用して、form2 に切り替えています。

Form1 class:
    Form form2= new form2();
                this.Hide();
                form2.Show();  



Form2 class:

form1 の新しいインスタンスを作成せずに同じ form1 を再度開くにはどうすればよいですか?

4

4 に答える 4

3

このインスタンスを form2 に渡し、必要な.Show()ときにそれを取得する必要があります。

于 2012-05-19T07:41:47.377 に答える
2

簡単な解決策は、次のように、2 番目のフォームをモーダルに表示し、2 番目のフォームが閉じたときに最初のフォームが表示されるようにすることです。

  public partial class Form1: Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      Form2 form2 = new Form2();
      this.Hide();
      form2.ShowDialog();
      this.Show();
    }
  }

  public partial class Form2: Form
  {
    public Form2()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      Close();
    }
  }

この作業を非モーダルにすることは、演習として残されています:)

于 2012-05-19T07:49:07.070 に答える
1

form2 のコード ビハインドで、コンストラクターにパラメーターを追加します。

Form2(Form form1)
{
   //use form1 object here
   //you can declare a variable of Form1 in Form2 and use it everywhere in the scope of form2
}

次に、form2 のオブジェクトを初期化するときに:

Form form2 = new Form(this);
this.Hide();
form2.show();
于 2012-05-19T07:51:44.873 に答える
1

form2. hide()を実行しているときは、実際には破棄せずに非表示にしているため、作成したインスタンスがまだ存在するため、再度表示するために使用できます

form2.dispose()を使用する場合は、新しいインスタンスを作成する必要があります

于 2012-05-19T07:47:57.417 に答える