0

Form1、Form2、Form3 の 3 つのフォームがあります。Form1 のボタンは Form3 を開くことができ、Form2 のボタンは Form3 を開くこともできます。いずれかのボタンを押すと、それぞれのフォームが非表示になり、Form3 が開きます。Form3 を閉じると、非表示になっていたフォームが開きます。

どうすればこれを行うことができますか?

4

2 に答える 2

3

Form.ShowメソッドはOwnerForm引数として取ることができるので、次のように呼び出します。

var frm = new Form3();
frm.Show(this);

プロパティによって Form3 の親にアクセスできるOwnerため、終了イベントでは次のようになります。

private void FormIsClosing(object sender, FormClosingEventArgs e)
{
   var owner = this.Owner;

   if (owner != null)
   {
       owner.Show();
   }
}
于 2013-05-18T09:35:28.360 に答える
0

もう 1 つの方法は、Activated および FormClosed イベントを使用することです。

ClickForm1で Form2 を表示する Buttonとしましょう

private void button1_Click(object sender, EventArgs e)
 {
  Form2 frm2 = new Form2();
  frm2.Activated += new EventHandler(frm2_Activated);
  frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed);
  frm2.Show();
 }

さて、これは Form2 が表示されたとき、またはアクティブ化されたときに、呼び出し元のフォームを非表示にします。この場合は Form1

    private void frm2_Activated(object sender, EventArgs e)
    {
        this.Hide(); // Hides Form1 but it is till in Memory
    }

これは、この場合 Form2 で呼び出されたフォームが閉じられると、非表示の Form1 が再び表示されます。

   private void frm2_FormClosed(object sender, FormClosedEventArgs e)
    {
        this.Show(); // Show hidden Form1
    }
于 2013-05-18T10:06:47.887 に答える