Arg - Validating controls on a form

T

Tom Jones

Hi,

I have a form with a textbox, an errorprovider, and an Ok & Cancel button.

The textbox cannot be empty when the dialog is dismissed. The textbox has
its 'CausesValidation' property set to true. Here is its validation code:

private void tbName_Validating(object sender,
System.ComponentModel.CancelEventArgs e)
{
if (tbName.Text.Length == 0)
{
e.Cancel = true;
tbName.Focus();
epErrorProvider.SetError(tbName, "This field cannot be empty");
}
else
{
epErrorProvider.SetError(tbName, "");
}
}

If the user hits the Ok button without the textbox ever gaining focus the
textbox's validation method never gets called so I check this in the Ok
button's handler:

private void btnOk_Click(object sender, System.EventArgs e)
{
if (epErrorProvider.GetError(tbName) == "")
this.Close();
else
// How do I *stop* the form from being closed here!?
}

My Cancel button has its 'CausesValidation' property set to false and looks
like:

private void btnCancel_Click(object sender, System.EventArgs e)
{
epErrorProvider.SetError(tbName, "");
this.Close(); // We need to cancel so forget about validating the
textbox
}

My problem is that hitting the Ok button before the textbox ever gains focus
causes the form to be dismissed - I *need* the form to stick around until
that textbox has valid data in it (unless the Cancel button was clicked).

How do I get around this issue?

Thanks,
TJ
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top