views:

1022

answers:

3

Hi,

Excuse me if this is a silly question but i'm a beginer here.

I have a simply custom dialog with two buttons: Accept and Cancel. The Accept button is the acceptButton of the form.

I want to do some validations on the Accept_Click event and decide if i can close the dialog or not, but everytime it leaves this method, the dialog automatically closes itself and returns Ok.

How can i do to stop the dialog from closing itself? or i have to do things in some other way?

thanks

A: 

Is the AcceptButton or CancelButton on the form set to that button? If so, try unsetting it and manually setting DialogResult in your handler when you want to close the dialog.

Jonathan
I don't want to do that because y want it to be the default button when i press Enter
DkAngelito
+1  A: 

I would validate as the controls change, and only enable the Accept button if the whole form is valid.

This would allow you to keep your button as the default button (AcceptButton), but prevent this from occurring.

Reed Copsey
+5  A: 

I would have a form level variable (call it _vetoClosing) In the accept button's Click event, I would run validation and set the variable based on that:

    private void acceptButton_Click(object sender, EventArgs e)
    {
        // Am I valid
        _vetoClosing = !isValid();
    }

Then in the FormClosing event, I would cancel close if _vetoClosing is true

    private void Form_FormClosing(object sender, FormClosingEventArgs e)
    {
        // Am I allowed to close
        if (_vetoClosing)
        {
            _vetoClosing = false;
            e.Cancel = true;
        }
    }

Turning Accept button off is suboptimal because you loose the Enter to Press functionality.

jrcs3
I agree... closing event is the way to handle this.
Brian ONeil