为什么我的表单不能关闭/隐藏?
我不明白为什么我的登录表单没有关闭或隐藏,即使我已经在使用“this.Hide,我试图关闭然后打开另一个,第二个窗体打开但Log中仍然存在运行这是为什么 这里是我的代码为什么我的表单不能关闭/隐藏?
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();
main.ShowDialog();
是一个阻塞呼叫。直到关闭主窗口,控制才会运行到下一行。
这是因为你使用ShowDialog
等待表单被关闭,然后再执行代码。
main.Show();
this.Close();
但之后我的第二个也是关闭 – KyelJmD 2012-02-25 08:27:29
ShowDialog将窗体显示为模态对话框,所以它阻止了对this.Hide()的调用。 Hide()只会在关闭MainWindow后被调用。你有几个选项:在ShowDialog之前调用this.Hide()。或者没有你的MainWindow模态。
你是什么意思的模态? – KyelJmD 2012-02-25 08:28:29
在这种情况下,您的登录表单是主应用程序的父级。
- Program.cs中打开登录表单模态
- 用户输入凭据并按下登录
- 凭证进行检查,如果正确的窗体关闭,执行的是:从一个角度应用程序设计的点,如果它可能会更好回到Program.cs的
- 的Program.cs检查窗体上的属性,以确定登录是否成功
- 如果是这样,主要应用形式打开
但是,请注意,这并没有真正使应用程序安全,因为有人可以引用你的exe在他们自己的项目和编程打开你的主窗体。但那是另一个讨论。
好的,谢谢,我终于找到了解决办法 – KyelJmD 2012-02-25 08:31:27