在 winforms 中,当主应用程序表单关闭时,进程将被终止。主应用程序表单是在 Application.Run 调用中指定的一种。在您的情况下,它是登录表单:
Application.Run(new Login());
要关闭表格,您应该致电Close
方法。你打电话时Hide
or set Visibility
如果是假的,形式就会留在记忆中。它只是对用户隐藏。
因此,为了实现所需的功能,您应该将主应用程序表单更改为 Main_Usr:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Main_Usr()); // change main form
}
然后订阅Load
Main_User 表单的事件。并在事件处理程序中执行以下操作:
private void Main_User_Load(object sender, EventArgs e)
{
using (var loginForm = new Login())
{
Hide(); // hide main form
if (loginForm.ShowDialog() != System.Windows.Forms.DialogResult.OK)
{
Close(); // close main form and kill process
return;
}
Show(); // show main form if user logged in successfully
}
}
更新:您可以在 Main 方法中完成这一切,就像这样
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
using(var loginForm = new Login())
if (loginForm.ShowDialog() != System.Windows.Forms.DialogResult.OK)
return;
Application.Run(new Main_Usr()); // change main form
}
但通常我不会隐藏主表单并将其显示在登录表单下方。所以,在这种情况下你应该使用Load
事件处理程序。由你决定。
顺便说一句,winforms 中没有母版页和页面。这一切都是针对 ASP.NET 的。这里有表格:)
还要考虑诸如 LoginForm、MainForm 等命名。