我需要关闭当前主窗口并显示新的主窗口。 首先加载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();
}
但这不正确。
答案 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窗口,此方法效果最佳。