Предположим, у вас есть Form1
и Form2
.
Код в Form1
должен выглядеть примерно так:
public partial class Form1 : Form
{
private Form2 _form2;
public Form1()
{
InitializeComponent();
_form2 = new Form2();
_form2.VisibleChanged += new EventHandler(_form2_VisibleChanged);
}
void _form2_VisibleChanged(object sender, EventArgs e)
{
if (!_form2.Visible)
Show();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Hide();
_form2.Show();
}
}
И в Form2
все, что вам нужноЧтобы сделать это:
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
Hide();
}
Конечно, вы должны подписаться на событие FormClosing
в Form2
, но если вы делаете это через дизайнера (Форма Properties
, нажав на значок Events
) просто вставьте эти две строки в метод, который он создает)
Что делает этот код?
In Form1
:
- Создание экземпляра
Form2
- В методе
Form1_FormClosing
все, что мы делаем, это скрываем форму вместо ее закрытия, когдапользователь закрывает его и показывает экземпляр Form2
- Подпишитесь на событие
VisibleChanged
- Когда происходит событие, если экземпляр
Form2
не виден, тогда Form1
появляется.
In Form2
:
- 2-й из вышеперечисленных шагов, но ничего не показывается.
Если вы хотите сделать это при нажатии на кнопку, все, что вам нужно сделать, это сделать то же самое, но для события Click
на кнопке вместо события FormClosing
.