Да, этот код неприятен.Это идет не так, когда пользователь закрывает диалог.Затем Windows должна найти другое окно, на которое нужно обратить внимание.В вашем приложении ничего не осталось, ваше главное окно невидимо.Затем он выбирает окно другого приложения.Хорошие шансы, например, что это будет окно внутри Visual Studio.Большой.Ваша основная форма теперь исчезает за ней.
Вам необходимо убедиться, что ваше главное окно снова отображается до того, как закроется диалоговое окно.Вы можете сделать это, подписавшись на обработчик событий FormClosing диалога.Например:
private void button1_Click(object sender, EventArgs e) {
using (var dlg = new Form2()) {
dlg.StartPosition = FormStartPosition.Manual;
dlg.Location = this.Location;
dlg.FormClosing += (s, ea) => this.Show(); // <=== Here
this.Hide();
if (dlg.ShowDialog() == DialogResult.OK) {
// etc...
}
}
}