我的应用程序遇到了问题。我有两个表单,一个在我的应用程序启动时加载,要求输入密码,另一个在用户使用正确的密码登录时显示。
如何关闭登录表单并让用户进入下一个实际应用程序表单?
目前我隐藏了登录表单,但要求是关闭登录表单以防止额外处理。但是,当我关闭登录表单时,我的应用程序退出,当我隐藏登录表单但关闭实际的应用程序表单时,登录表单仍然打开并阻止我的应用程序关闭,因为登录表单仍然在后台运行。
如何解决这个问题?
答案 0 :(得分:4)
我通常会处理这个问题的方法类似于main方法中的代码;
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (PerformLogin())
{
Application.Run(new MainForm());
}
}
private static bool PerformLogin()
{
using (LoginForm loginForm = new LoginForm())
{
if (loginForm.ShowDialog() == DialogResult.OK)
{
return AuthenticateUser(loginForm.UserName, loginForm.Password);
}
else
{
return false;
}
}
}
由于登录表单是在PerformLogin
方法中创建和销毁的,因此它不会在内存中保留超过必要的时间。
答案 1 :(得分:0)
我想说最简单的方法就是在第二个的Load事件中显示第一个表单作为模态对话框。如果密码验证失败,您可以在事件处理程序中调用Close,第二个表单也将消失。
显然你会使用第二个表单作为Main()函数中传递给Application.Run的表单。
答案 2 :(得分:0)
更简单 - 进入主要方法。打开第一个表单作为DIALOG,初始化应用程序,使用Application.Run打开第二个表单。结束。
答案 3 :(得分:0)
我认为,你已经使用了
LoginForm.Hide();
使用
LoginForm.Close();
我也可能错了......但只是试着运气......