sooprise
sooprise

Reputation: 23177

C# Windows Form: On Close Do [Process]

How can I get my windows form to do something when it is closed.

Upvotes: 26

Views: 50966

Answers (6)

Ian
Ian

Reputation: 34489

Or another alternative is to override the OnFormClosed() or OnFormClosing() methods from System.Windows.Forms.Form.

Whether you should use this method depends on the context of the problem, and is more usable when the form will be sub classed several times and they all need to perform the same code.

Events are more useful for one or two instances if you're doing the same thing.

public class FormClass : Form
{
   protected override void OnFormClosing(FormClosingEventArgs e)
   {
        base.OnFormClosing(e);
        // Code
   } 
}

Upvotes: 16

Powerlord
Powerlord

Reputation: 88786

WinForms has two events that you may want to look at.

The first, the FormClosing event, happens before the form is actually closed. In this event, you can still access any controls and variables in the form's class. You can also cancel the form close by setting e.Cancel = true; (where e is a System.Windows.Forms.FormClosingEventArgs sent as the second argument to FormClosing).

The second, the FormClosed event, happens after the form is closed. At this point, you can't access any controls that the form had, although you can still do cleanup on variables (such as Closing managed resources).

Upvotes: 11

user2885204
user2885204

Reputation: 11

Syntax :

   form_name.ActiveForm.Close();

Example:

   {
         Form1.ActiveForm.close();
   }

Upvotes: -2

SLaks
SLaks

Reputation: 887215

Handle the FormClosed event.

To do that, go to the Events tab in the Properties window and double-click the FormClosed event to add a handler for it.

You can then put your code in the generated MyForm_FormClosed handler.

You can also so this by overriding the OnFormClosed method; to do that, type override onformcl in the code window and OnFormClosed from IntelliSense.

If you want to be able to prevent the form from closing, handle the FormClosing event instead, and set e.Cancel to true.

Upvotes: 38

Justin Niessner
Justin Niessner

Reputation: 245389

Add an Event Handler to the FormClosed event for your Form.

public class Form1
{

    public Form1()
    {    
        this.FormClosed += MyClosedHandler;
    }

    protected void MyClosedHandler(object sender, EventArgs e)
    {
        // Handle the Event here.
    }
}

Upvotes: 5

mint
mint

Reputation: 3433

 public FormName()
 {
      InitializeComponent();
      this.FormClosed += FormName_FormClosed;
 }

private void FormName_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
{
   //close logic here
}

Upvotes: 2

Related Questions