(Для целей этого ответа 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();
в 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();