Темы все еще работают в C # - PullRequest
2 голосов
/ 25 ноября 2010

У меня есть 2 формы: signin и control_panel.После входа в систему я скрываю эту форму с помощью функции this.Hide() и в то же время создаю новый объект формы control_panel и показываю его с помощью newobj.Show();Но когда я закрываю форму control_panel непосредственно, я вижу, что первый поток формы все еще работает.Я закрываю его кнопкой stop_debugging.Как я закрою все потоки или весь выход программы одновременно.

Ответы [ 2 ]

3 голосов
/ 25 ноября 2010

Поток для вашей первой формы все еще работает, потому что вы только звоните this.Hide. Все, что делает, это hide форма; это не закрывает это. Вместо этого вам нужно использовать this.Close, который закроет вашу исходную форму.

Если вы хотите убедиться, что все приложение закрывается, и в процессе закрыть все формы, которые все еще могут быть открыты, вы можете использовать метод Application.Exit в любом месте кода вашей формы.


РЕДАКТИРОВАТЬ: Чтобы расширить мой последний комментарий, вы можете захотеть что-то вроде этого в вашем Program.cs файле:

static class Program
{
   /// <summary>
   /// The main entry point for the application.
   /// </summary>
   [STAThread]
   static void Main()
   {
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);

      SignInForm frmSignIn = new SignInForm();
      if (frmSignIn.ShowDialog() == DialogResult.Yes)
      {
         //If the sign-in completed successfully, show the main form
         //(otherwise, the application will quit because the sign-in failed)
         Application.Run(new ControlPanelForm());
      }        
   }
}
0 голосов
/ 25 ноября 2010

Создайте событие FormClosed в окне свойств формы control_panel элемента control_panel и напишите следующую строку как

private void control_panel_FormClosed(object sender, FormClosedEventArgs e)
    {
        Application.Exit();
    }
...