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

firing button_click event with code and returning DialogResult.OK

如果用户在文本框上按下回车键,我想触发一个按钮单击事件,但当我这样做时按钮没有 returning 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();
}

这是我的文本框按键事件

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

知道为什么文本框事件不会导致按钮 return 变为 DialogResult.OK 吗?

你应该使用 btnPartialComplete.PerformClick()。通过调用 PerformClick() 您正在为您的按钮生成一个点击事件,但是当您调用 btnPartialComplete_Click 时您只是执行一个函数,该函数被注册为在引发按钮的点击事件时执行。所以调用btnPartialComplete_Click不等于点击按钮。