Form1、Form2、Form3 の 3 つのフォームがあります。Form1 のボタンは Form3 を開くことができ、Form2 のボタンは Form3 を開くこともできます。いずれかのボタンを押すと、それぞれのフォームが非表示になり、Form3 が開きます。Form3 を閉じると、非表示になっていたフォームが開きます。
どうすればこれを行うことができますか?
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();
}
}
もう 1 つの方法は、Activated および FormClosed イベントを使用することです。
Click
Form1で 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
}