怎么重装主窗口?

时间:2011-06-28 12:29:29

标签: c# winforms

我需要关闭当前主窗口并显示新的主窗口。 首先加载Main。

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

在事件主要我需要关闭并显示新的明确主要。 我试过了:

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

但这不正确。

4 个答案:

答案 0 :(得分:3)

将主要方法更改为:

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

请注意,您应致电Application.Exit()以关闭申请。

答案 1 :(得分:1)

你可以这样做:

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表单发送消息以退出。

答案 2 :(得分:1)

以模态方式显示表单,并让表单返回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();
}   

答案 3 :(得分:0)

你不能这样做,因为关闭主窗口会向运营商进程发送一条消息,然后你的程序就不再拥有控制权(不能执行任何代码)。

提供类似注销的功能,关闭数据库连接,关闭所有子窗口,再次返回登录屏幕以实现“快速用户切换”功能。

P.S:如果主窗口是MDI窗口,此方法效果最佳。