首页 > 解决方案 > 按下按钮后如何设置DialogResult?

问题描述

我正在使用 Windows 窗体设计器创建一个密码窗口,但上下文有点不同。有几个输入字段,其中一个受密码保护。有一个“更改”按钮,可在主窗口顶部生成一个新的密码窗口。用户输入密码尝试并按下“确定”。我需要一种方法让 OK 按钮检查密码,然后发送DialogResult.OK回主窗口,或者如果尝试不正确,则显示“密码错误”。这意味着我最初无法将其设置DialogResultDialogResult.OK,所以我不确定如何执行此操作。

目前我在点击事件函数中设置DialogResultDialogResult.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;
    }
}

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

标签: c#winforms

解决方案


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

推荐阅读