(この回答の目的のために、から継承するクラスForm1
を表します)Form2
Windows.Window
次のアプローチのいずれかをお勧めします
アプローチ 1:Form2
生き続けて、再び表示できるようにする
この場合、次のインスタンス変数を作成する必要がありますForm1
。
private Form2 form2;
に「切り替える」コードでForm2
、次のようにします。
if(form2 == null)
{
form2 = new Form2();
DependencyPropertyDescriptor.FromProperty(Window.VisibilityProperty,
typeof(Window)).AddValueChanged(form2, Form2_VisibilityChanged);
}
Hide();
form2.Show();
次に、この関数を に追加しますForm1
。
private void Form2_VisiblityChanged(object sender, EventArgs e)
{
if(form2.Visility == Visibility.Hidden) Show();
}
Hide();
あとは、 withinを呼び出しForm2
て に戻すだけForm1
です。
アプローチ 2:Form2
毎回新しいインスタンスを閉じて開く
これは少し簡単で、あなたが持っているものとより一致しています:
Form2 form2 = new Form2();
form2.Closed += Form2_Closed;
Hide();
form2.Show();
同様に、この関数を に追加しますForm1
。
private void Form2_Closed(object sender, EventArgs e)
{
Show();
}
ここで、 を呼び出す代わりHide();
にForm2
、Close();