如何设置DialogResult按下后的按钮?

时间:2019-05-13 17:29:51

标签: c# winforms

除了上下文有所不同外,我正在使用Windows Form Designer创建一个密码窗口。有几个输入字段,其中之一是受密码保护的。有一个“更改”按钮,可在主窗口顶部生成一个新的密码窗口。用户输入密码尝试,然后按“确定”。我需要一种方法,使“确定”按钮检查密码,然后将DialogResult.OK发送回主窗口,或者如果尝试不正确,则显示“密码错误”。这意味着我一开始无法将DialogResult设置为DialogResult.OK,所以我不确定该怎么做。

当前,我在点击事件功能中将DialogResult设置为DialogResult.OK,但是很明显,这将它设置为下次单击而不是当前单击,因此用户必须按两次OK按钮。

private void buttonOK_Click(object sender, EventArgs e)
{
    string passwordAttempt = textBoxPassword.Text;
    if( passwordAttempt.CompareTo("pass") == 0 )
    {
        this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK;
    }
}

一种可能的解决方案是通过代码触发第二个事件(不确定如何执行此操作)。或者,在这种情况下,有没有更好的方法可以做我没有想到的密码窗口?

1 个答案:

答案 0 :(得分:1)

  1. 将对话框的AcceptButton设置为buttonOK(“确定”按钮)。您可以使用代码或设计器来完成此操作。
  2. 设置对话框形式的DialogResult,而不是按钮。

代码:

this.AcceptButton = buttonOK;

...

private void buttonOK_Click(object sender, EventArgs e)
{
    string passwordAttempt = textBoxPassword.Text;
    if (passwordAttempt.CompareTo("pass") == 0)
    {
        this.DialogResult = System.Windows.Forms.DialogResult.OK;
        Close();
    }
}
相关问题