我试图在新创建的表单之间切换,但是如果我在关闭旧表单之前看到创建新屏幕,则整个应用程序将退出;
Inital Creation
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Login());
}
此登录屏幕会导致创建一个新窗口,此时我正在隐藏屏幕以保持应用程序正常运行;
new MainScreen(uID, this).Show();
this.Hide();
在MainScreen中,我有一个“更改用户”按钮,这意味着我需要创建一个新的登录屏幕,但下面的代码只退出整个正在运行的应用程序;
Login newLoginForm = new Login(this);
mainLoginForm.Close();
我设计这个完全错误的方式还是我只是没有使用正确的方法?!任何帮助都会很棒。
答案 0 :(得分:3)
当您关闭第一个登录表单时,您的应用程序退出Run(new 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 :(得分:1)
不幸的是,要在WinForms中实现这一点,您需要管理应用程序并重新计算窗口。
Application.Run(ApplicationContext)
的MSDN文档中有关于如何实现它的示例代码。
在WPF中,您只需设置Application.ShutdownMode = ShutdownMode.OnLastWindowClosed
。