使用代码触发button_click事件并返回DialogResult.OK

时间:2015-01-10 17:02:13

标签: c# .net winforms button visual-studio-2013

如果用户在文本框中按Enter键,我想触发按钮单击事件,但是当我按下该按钮时没有返回DialogResult.OK。当我实际点击按钮时,它可以工作。有什么想法吗?

这是我的父表单代码

using (var completedForm = new CompletedForm(Qty))
{
    DialogResult result = completedForm.ShowDialog();
    if (result == DialogResult.OK)
    {
        return completedForm.QtyCompleted;
    }
    MessageBox.Show("Invalid Qty, Please Try Again");
  return 0;  
}

这是我的子表单按钮单击事件

private void btnPartialComplete_Click(object sender, EventArgs e)
{
    if(tbQtyComplete.Text == "")
    {
        tbQtyComplete.Text = "0";
    }

    this.QtyCompleted = int.Parse(tbQtyComplete.Text);
    this.Close();
}

这是我的文本框keydown事件

private void tbQtyComplete_KeyDown(object sender, KeyEventArgs e)
{
    if(e.KeyCode == Keys.Return)
    {
        btnPartialComplete_Click(null, EventArgs.Empty);
    }
}

为什么textbox事件不会导致按钮返回DialogResult.OK的任何想法?

1 个答案:

答案 0 :(得分:1)

您应该使用btnPartialComplete.PerformClick()。通过调用PerformClick(),您将为按钮生成单击事件,但是当您调用btnPartialComplete_Click时,您只需执行一个注册在按钮单击事件时执行的功能。所以调用btnPartialComplete_Click并不等于点击按钮。