【问题标题】:How to prevent modal dialog form to close after pressing OK?按确定后如何防止模式对话框关闭?
【发布时间】:2014-05-22 06:58:14
【问题描述】:

我有一个(登录)表单,将其用作这样的模式(父表单代码):

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();
}

【问题讨论】:

    标签: c# .net winforms modal-dialog


    【解决方案1】:

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

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

    MSDN Button.DialogResult Property

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        然后不要调用close

        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();
          }
        }
        

        【讨论】:

        • 忘记加else;但它再次关闭模态形式
        猜你喜欢
        • 2012-08-22
        • 2020-05-02
        • 2012-02-18
        • 2011-10-30
        • 1970-01-01
        • 2022-01-06
        相关资源
        最近更新 更多