我不知道为什么我的登录表单没有关闭或隐藏,即使我已经使用“this.Hide,我试图关闭然后打开另一个,第二个表单打开但是登录仍在运行,为什么会这样? 这是我的代码
public void verifyAccount()
{
var hashedPassword = getPassword();
var hasher = new Hasher();
hasher.SaltSize = 16;
hasher.CompareStringToHash(txtPassword.Text, hashedPassword);
if (!hasher.CompareStringToHash(txtPassword.Text, hashedPassword))
{
MessageBox.Show("Invalid UserName or Password");
}
else
{
MainWindow main = new MainWindow();
main.ShowDialog();
this.Hide();
}
}
编辑:随着人们的评论,我发现了如何关闭登录表单的想法,这是我的解决方法
MainWindow main = new MainWindow();
this.Hide();
main.ShowDialog();
this.Close();
答案 0 :(得分:2)
main.ShowDialog();
是一个阻止通话。在关闭主窗口之前,控件不会运行到下一行。
答案 1 :(得分:0)
这是因为您使用ShowDialog
等待表单在执行更多代码之前关闭。尝试
main.Show();
this.Close();
答案 2 :(得分:0)
ShowDialog将表单显示为模式对话框,因此它阻止了对this.Hide()的调用。只有在关闭MainWindow后才会调用Hide()。你有几个选择:在ShowDialog之前调用this.Hide()。或者没有你的MainWindow是模态的。
答案 3 :(得分:0)
在这种情况下,您的登录表单是主应用程序的父级。从应用程序设计的角度来看,如果可能更好:
但请注意,这并不能确保应用安全,因为有人可以在自己的项目中引用您的exe并以编程方式打开您的主表单。但这是另一场讨论。