Это связано с тем, что вы используете Hide()
вместо Close()
.
Если вы используете функцию Hide()
, она просто устанавливает свойство формы Visibility.Hidden
, что означаетчто форма все еще работает в фоновом режиме.
Теперь, когда вы вызываете функцию из Form4
в «Закрыть» и открываете Form3
, вы просто скрываете Form4
, если хотитеперезвоните Form4
, вы создадите два Form4
(того же типа), так как он все еще находится в фоновом режиме.
Один из способов, который мне нравится делать, это проверить, открыта ли формаперед созданием новой:
private void button1_Click(object sender, EventArgs e)
{
Close();
var app = Application.OpenForms["Form3"];
if (app == null)
{
Form3 f3 = new Form3();
f3.Show();
}
else { app.Show(); app.BringToFront(); }
}
Или вы можете просто вызвать новую форму, но не забудьте закрыть форму.
private void button1_Click(object sender, EventArgs e)
{
Close();
Form3 f3 = new Form3();
f3.Show();
}