Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations TouchToneTommy on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Handle the form closing when the user clicks on the “X” form button

Status
Not open for further replies.

polocar

Programmer
Sep 20, 2004
89
IT
Hi,
suppose that you have a C# form with two buttons, that are the classical “btnOk” and “btnCancel” (besides them, of course in the form there can be many other controls).
When the user clicks on btnOk, the program makes some confirm operations and closes the form.
When the user clicks on btnCancel, the program makes some cancel operations and closes the form.
My problem is that, when the user clicks on the “X” button of the form caption bar, the form simply closes, while I would like that the program made the same cancel operations as in the btnCancel click case.
I have discovered that the Form class has the “OnClosing” event handler (that is executed when the form closes), but I can’t insert the cancel statements in its code (it is executed when the user clicks on btnOk and btnCancel too, so the program would execute two times the cancel operations or first the confirm operations and then the cancel ones).
Is there a form event handler for the “X” form button click?
Or is there a form property that allows to associate the “X” form button click to a button inside the form (btnCancel, in this case)?
Otherwise, can you propose me a simple way to handle this situation?
Thank you very much
 
wha?

Capture the Closing event of the form

this.Closing += new EventHandler(form1_closing);

private bool exitform = false;

private void form1_closing(object sender, EventArgs e)
{
if (exitform == false)
{
exitform = true;
e.Cancel = true;

PeformCancelCommand();
}
}


So the close will only execute once using the X button. Put the code that is currently in your Cancel button press into a separate method called PerformCancelCommand() and you will be set.

private void PerformCancelCommand()
{
//your button code.
}
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top