I have a windows form with multiple controls and OK and Cancel buttons. In the Click event handler of OK button, it checks to see if there are errors on the form. I need the form to stay open if there are errors. But the code below is not working. If there are errors, it is closing the form and returning to the caller. And I have the below two lines to invoke and show the form.
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
}
Thanks for any help.
There’s nothing in this code that will close the form. Therefore, the culprit must be outside this code.
Did you set your OK button’s DialogResult property to DialogResult.OK? That would explain why the form is closing. AFAIK, if you set DialogResult on the button, that’s what happens — there’s no way to veto it in code.
So in that case, you would need to go back to the designer and set the button’s DialogResult back to None. Then at the end of your
btnOk_Clickmethod, once you’ve validated all the input and decided that it’s safe to close the dialog, add a line that sets your Form’s DialogResult property to OK.