我尝试在新创建的窗体之间切换,但如果在关闭旧的屏幕之前看到我正在创建新的屏幕,则整个应用程序将退出;
初始创建
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();我的设计是完全错误的,还是我没有使用正确的方法?!任何帮助都是最好的。
发布于 2012-02-20 05:33:25
当您关闭第一个登录表单时,您的应用程序将退出运行(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();
}发布于 2012-02-20 06:21:42
不幸的是,要在WinForms中实现这一点,您需要管理应用程序并重新计算窗口数量。
Application.Run(ApplicationContext)的MSDN文档中有关于如何实现它的示例代码。
在WPF中,您只需设置Application.ShutdownMode = ShutdownMode.OnLastWindowClosed。
https://stackoverflow.com/questions/9353410
复制相似问题