除了上下文有所不同外,我正在使用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;
}
}
一种可能的解决方案是通过代码触发第二个事件(不确定如何执行此操作)。或者,在这种情况下,有没有更好的方法可以做我没有想到的密码窗口?
答案 0 :(得分:1)
AcceptButton
设置为buttonOK
(“确定”按钮)。您可以使用代码或设计器来完成此操作。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();
}
}