按OK后如何防止关闭模态对话框?

时间:2014-05-22 06:58:15

标签: c# .net winforms modal-dialog

我有一个(登录)表单,它使用它作为这样的模态(父表单代码):

using (var login = new Login())
{
     login.ShowDialog();
}

我对打开的模态对话框进行了一些检查,如果用户名和密码错误,我希望它不会在按下OK按钮时关闭。

我的登录信息:

private void goSignIn_Click(object sender, EventArgs e)
{
     var loggedInCustomer =LoginController.signIn(usernameBox.Text, passwordBox.Text);
     if (loggedInCustomer == null)
     {
         MessageBox.Show("Wrong username or password! :( ", "Wrong!");
     }
     else
         Close();
}

3 个答案:

答案 0 :(得分:2)

检查按钮(goSignIn)DialogResult属性。如果已设置,则会自动关闭表单。

  

如果此属性的DialogResult设置为None以外的任何值,并且如果通过ShowDialog方法显示父窗体,则单击该按钮将关闭父窗体,而无需挂接任何事件。然后,单击按钮时,窗体的DialogResult属性将设置为按钮的DialogResult。

MSDN Button.DialogResult Property

答案 1 :(得分:2)

我猜您已将DialogResult goSignIn按钮设置为某个值(可能是DialogResult.OK),删除该行,一切都应该正常工作。

答案 2 :(得分:0)

不要打电话关闭

private void goSignIn_Click(object sender, EventArgs e)
{
  var loggedInCustomer =LoginController.signIn(usernameBox.Text, passwordBox.Text);
  if (loggedInCustomer == null)
  {
     MessageBox.Show("Wrong username or password! :( ", "Wrong!");
  }
  else
  {
     Close();
  }
}