Form::OnClosing Method (CancelEventArgs^)


Raises the Closing event.

Namespace:   System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

virtual void OnClosing(
	CancelEventArgs^ e


Type: System.ComponentModel::CancelEventArgs^

A CancelEventArgs that contains the event data.


The OnClosing method is obsolete in the .NET Framework version 2.0; use the OnFormClosing method instead.

Raising an event invokes the event handler through a delegate. For more information, see Handling and Raising Events.

The OnClosing method also allows derived classes to handle the event without attaching a delegate. Overriding this method is the preferred technique for handling the event in a derived class.


The OnClosed and OnClosing methods are not called when the Application::Exit method is called to exit your application. If you have validation code in either of these methods that must be executed, you should call the Form::Close method for each open form individually before calling the Exit method.

Notes to Inheritors:

When overriding OnClosing in a derived class, be sure to call the base class's OnClosing method so that registered delegates receive the event.

The following code example uses Closing to test if the text in a TextBox has changed. If it has, the user is asked whether to save the changes to a file.

   void Form1_Closing( Object^ /*sender*/, System::ComponentModel::CancelEventArgs^ e )
      // Determine if text has changed in the textbox by comparing to original text.
      if ( textBox1->Text != strMyOriginalText )
         // Display a MsgBox asking the user to save changes or abort.
         if ( MessageBox::Show( "Do you want to save changes to your text?", "My Application", MessageBoxButtons::YesNo ) == ::DialogResult::Yes )
            // Cancel the Closing event from closing the form.
            e->Cancel = true;

            // Call method to save file...

.NET Framework
Available since 1.1
Return to top