Проблема в том, что как только первый экземпляр Form1
закрывается, приложение закрывается и завершает работу, поскольку цикл сообщений приложения определен с исходным экземпляром Form
, и он просто ожидает события в этой форме, покаэто закрывается.После закрытия приложение закроется, открытие новой формы не остановит этот процесс.
Вам необходимо настроить метод Main()
в Program.cs
, чтобы он выглядел примерно так:
[STAThread]
static void Main()
{
// ... Application configuration as required here
new Form1().Show(); // The first form instance is now no longer bound to the Application message loop. Start it before we begin the run loop
Application.Run(); // Don't pass in Form1
}
Ваш оригинальный код теперь должен работать.Могу добавить, однако, что это не очень хороший пользовательский опыт.Тщательно продумайте, чего вы пытаетесь достичь, и, возможно, рассмотрите альтернативы - вам просто нужна кнопка «перезагрузить форму»?Или основная цель - не дать пользователю закрыть приложение?Если последнее, вы можете удалить значок закрытия в целом.