我正在开发一个c#winform应用程序,我有一个按钮,点击一个要求输入密码的对话框。如果密码正确,则执行按钮下的代码。这是主表单上的代码。
password pass = new password();
pass.ShowDialog();
if (pass.DialogResult == DialogResult.OK)
{
if (pass.Password == "12")
{
以下是我在密码表单中的“确定”按钮上的代码
private void btnOK_Click(object sender, EventArgs e)
{
button1.DialogResult = DialogResult.OK;
}
问题是密码表单的确定按钮必须单击两次才能正常工作。有什么想法吗?
答案 0 :(得分:3)
将对话框窗体的AcceptButton属性设置为OK按钮,然后删除btnOK_click事件。
答案 1 :(得分:1)
从Button.DialogResult documentation我看到该属性定义了在单击按钮时返回表单的DialogResult 。这意味着您应该在构造函数中使用代码行button1.DialogResult = DialogResult.OK;
,或者只是在设计器中设置它,而不是在click-event上。
答案 2 :(得分:0)
在this.Close(...)
btnOK_Click
private void btnOK_Click(object sender, EventArgs e)
{
button1.DialogResult = DialogResult.OK;
this.Close();
}
答案 3 :(得分:0)
将密码表单的AcceptButton设置为btnOK。并删除click事件处理程序。您不需要事件处理程序 - 来自文档 - 如果此属性的DialogResult设置为None以外的任何值,而如果通过ShowDialog方法显示父窗体,则单击该按钮将关闭父窗体而不显示不得不挂钩任何事件。单击按钮后,窗体的DialogResult属性将设置为按钮的DialogResult。
MSDN:http://msdn.microsoft.com/en-us/library/system.windows.forms.button.dialogresult.aspx