Как перезагрузить главное окно? - PullRequest
0 голосов
/ 28 июня 2011

Мне нужно закрыть текущее главное окно и показать новое главное окно.Первая загрузка Main.

static class Program
{
    [STAThread]
    static void Main()
    {
        var main = new Main();
        Application.Run(main);
    }
}

В случае main мне нужно закрыть и показать новый сброс Main.Я пытался так:

private void ChangeUsers()
{
    this.Visible = false;
    var window = new Main();
    window.Show();
    this.Close();
}

но это не правильная работа.

Ответы [ 4 ]

3 голосов
/ 28 июня 2011

Измените основной метод на этот:

static class Program
{
    [STAThread]
    static void Main()
    {
        new Main().Show();
        Application.Run();
    }
}

И обратите внимание, что вы должны вызвать Application.Exit(), чтобы закрыть приложение.

1 голос
/ 28 июня 2011

Вы можете сделать что-то вроде этого:

static class Program
{
    [STAThread]
    static void Main()
    {
        var loader = new Loader();
        Application.Run(loader);
    }
}

public class Loader : Form 
{
    public Loader()
    {
        InitializeComponent();
        Main win = new Main();
        win.Show();
        this.Hide();
    }

}

public class Main : Form 
{

}

Таким образом, форма Loader (которая является запущенной формой, не будет закрыта, но будет скрыта). И вы можете создать столько основных форм (окон), сколько захотите. Если вы хотите закрыть приложение, отправьте сообщение в форму Loader для выхода.

1 голос
/ 28 июня 2011

Это показывает форму модально и позволяет форме возвращать DialogResult, чтобы указать, нужно ли повторно показывать форму.

static class Program
{
  [STAThread]
  static void Main()
  {
      Main main;
      do
      {
         main = new Main();
      } while (DialogResult.OK == main.ShowDialog ());
  }
} 

private void ChangeUsers()
{
    this.DialogResult = DialogResult.OK;
    this.Close();
}   
0 голосов
/ 28 июня 2011

Вы не можете этого сделать, так как закрытие главного окна отправит сообщение оператору-носителю, который должен быть завершен, и тогда ваша программа больше не будет иметь контроля (больше не сможет выполнять код).

вместо этого предоставьте что-то вроде выхода из системы, закройте соединения с БД, закройте все дочерние окна, снова вернитесь к экрану входа в систему для достижения функции «Быстрое переключение пользователей».

PS: Этот метод имеет лучший эффект, если главное окно было окном MDI.

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