0

我正在开发 ac#winform 应用程序,我有一个按钮,点击后会出现一个询问密码的对话框。如果密码正确,则执行按钮下的代码。这是主窗体上的代码。

    password pass = new password();
       pass.ShowDialog();
      if (pass.DialogResult == DialogResult.OK)
        {
            if (pass.Password == "12")
            {

下面是我在密码表单中的 OK 按钮上的代码

      private void btnOK_Click(object sender, EventArgs e)
    {
        button1.DialogResult = DialogResult.OK;
    }

问题是密码表单的确定按钮必须单击两次才能正常工作。任何想法为什么?

4

4 回答 4

3

将对话框窗体的 AcceptButton 属性设置为 OK 按钮,并移除 btnOK_click 事件。

于 2012-07-10T06:42:44.483 回答
1

Button.DialogResult 文档中,我看到该属性定义了单击按钮时要返回到表单的 DialogResult 。这意味着您应该button1.DialogResult = DialogResult.OK;在构造函数中包含代码行,或者只是在设计器中设置它,而不是在点击事件上。

于 2012-07-10T06:44:08.570 回答
0

this.Close(...)在里面打电话btnOK_Click

private void btnOK_Click(object sender, EventArgs e)
{
    button1.DialogResult = DialogResult.OK;
    this.Close();
}
于 2012-07-10T06:38:35.600 回答
0

将密码表单的 AcceptButton 设置为 btnOK。并删除点击事件处理程序。您不需要事件处理程序 - 来自文档 - 如果此属性的 DialogResult 设置为 None 以外的任何值,并且如果父表单是通过 ShowDialog 方法显示的,则单击按钮将关闭父表单而无需挂钩起任何事件。然后,当单击按钮时,表单的 DialogResult 属性设置为按钮的 DialogResult。

MSDN:http: //msdn.microsoft.com/en-us/library/system.windows.forms.button.dialogresult.aspx

于 2012-07-10T06:48:54.377 回答