Как вы предотвращаете завершение работы приложения, если закрываете только одно окно? - PullRequest
2 голосов
/ 20 февраля 2012

Я пытаюсь переключиться между вновь созданными формами, но если я вижу, что создаю новый экран, прежде чем закрыть старый, как показано ниже, все приложение закроется;

Создание жизни

static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Login());
}

Этот экран входа в систему ведет к созданию нового окна, где в данный момент я скрываю экран, чтобы приложение продолжало работать;

new MainScreen(uID, this).Show();
this.Hide();

На главном экране у меня есть кнопка «Изменить пользователя», которая означает, что мне нужно создать новый экран входа в систему, но приведенный ниже код просто выходит из всего запущенного приложения;

Login newLoginForm = new Login(this);
mainLoginForm.Close();

Я проектирую это совершенно неправильно или я просто не использую правильный метод ?! Любая помощь будет великолепна.

Ответы [ 2 ]

3 голосов
/ 20 февраля 2012

Когда вы закрываете первую форму входа, ваше приложение выходит из режима Run (новый Login ()), поэтому вам следует начать с Run (new MainScreen ()), внутри конструктора или Form_Load этой формы вызовите свой логин.

static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new MainScreen()); 
} 

public MainScreen()
{
    Login loginForm = new LoginForm();
    if(loginForm.ShowDialog() == DialogResult.Cancel)
        Application.Exit();
    InitializeComponent();
}
1 голос
/ 20 февраля 2012

К сожалению, чтобы добиться этого в WinForms, вам нужно управлять приложением и пересчитать окна.

В документации MSDN для Application.Run(ApplicationContext) приведен пример кода того, как этого можно достичь.

В WPF вы просто устанавливаете Application.ShutdownMode = ShutdownMode.OnLastWindowClosed.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...