单击Windows窗体中的“确定”按钮时如何保持焦点重新形成?

时间:2011-12-06 17:50:21

标签: c# .net

我有一个带有多个控件和OK和Cancel按钮的窗体。在“确定”按钮的Click事件处理程序中,它会检查表单上是否存在错误。如果有错误,我需要表格保持开放。但是下面的代码不起作用。如果有错误,它将关闭表单并返回给调用者。我有以下两行来调用并显示表单。

PtForm paymentForm = new PtForm();
ptForm.ShowDialog();

private void btnOk_Click(object sender, EventArgs e)
    {
        this.ValidateChildren(ValidationConstraints.Visible);
        string ErrorString = GetValidationErrors();
        MessageBox.Show(ErrorString, "Errors");

        if (!string.IsNullOrEmpty(ErrorString))
        {
            return;
        }

//Processing

}

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

此代码中没有任何内容可以关闭表单。因此,罪魁祸首必须在此代码之外。

您是否将OK按钮的DialogResult属性设置为DialogResult.OK?这可以解释为什么表格正在结束。 AFAIK,如果你在按钮上设置DialogResult,就会发生这种情况 - 没有办法在代码中否决它。

因此,在这种情况下,您需要返回设计器并将按钮的DialogResult设置回None。然后在btnOk_Click方法结束时,一旦验证了所有输入并确定关闭对话框是安全的,添加一行将Form的DialogResult属性设置为OK。

答案 1 :(得分:1)

删除按钮的DialogResult属性,即。将其设置为无。