Permalink
81117b1 Sep 21, 2017
@yishengjin1413 @guardrex @tompratt-AQ @mairaw
93 lines (62 sloc) 4.74 KB
title ms.custom ms.date ms.prod ms.reviewer ms.suite ms.technology ms.tgt_pltfrm ms.topic dev_langs helpviewer_keywords ms.assetid caps.latest.revision author ms.author manager
Order of Events in Windows Forms
03/30/2017
.net-framework
dotnet-winforms
article
jsharp
events [Windows Forms], order of
focus event order
application shutdown event order
sequence, of events
validation events, order of
application startup event order
e81db09b-4453-437f-b78a-62d7cd5c9829
15
dotnet-bot
dotnetcontent
wpickett

Order of Events in Windows Forms

The order in which events are raised in Windows Forms applications is of particular interest to developers concerned with handling each of these events in turn. When a situation calls for meticulous handling of events, such as when you are redrawing parts of the form, an awareness of the precise order in which events are raised at run time is necessary. This topic provides some details on the order of events during several important stages in the lifetime of applications and controls. For specific details about the order of mouse input events, see Mouse Events in Windows Forms. For an overview of events in Windows Forms, see Events Overview. For details about the makeup of event handlers, see Event Handlers Overview.

Application Startup and Shutdown Events

The xref:System.Windows.Forms.Form and xref:System.Windows.Forms.Control classes expose a set of events related to application startup and shutdown. When a Windows Forms application starts, the startup events of the main form are raised in the following order:

  • xref:System.Windows.Forms.Control.HandleCreated?displayProperty=nameWithType

  • xref:System.Windows.Forms.Control.BindingContextChanged?displayProperty=nameWithType

  • xref:System.Windows.Forms.Form.Load?displayProperty=nameWithType

  • xref:System.Windows.Forms.Control.VisibleChanged?displayProperty=nameWithType

  • xref:System.Windows.Forms.Form.Activated?displayProperty=nameWithType

  • xref:System.Windows.Forms.Form.Shown?displayProperty=nameWithType

When an application closes, the shutdown events of the main form are raised in the following order:

  • xref:System.Windows.Forms.Form.Closing?displayProperty=nameWithType

  • xref:System.Windows.Forms.Form.FormClosing?displayProperty=nameWithType

  • xref:System.Windows.Forms.Form.Closed?displayProperty=nameWithType

  • xref:System.Windows.Forms.Form.FormClosed?displayProperty=nameWithType

  • xref:System.Windows.Forms.Form.Deactivate?displayProperty=nameWithType

The xref:System.Windows.Forms.Application.ApplicationExit event of the xref:System.Windows.Forms.Application class is raised after the shutdown events of the main form.

[!NOTE] Visual Basic 2005 includes additional application events, such as xref:Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Startup?displayProperty=nameWithType and xref:Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Shutdown?displayProperty=nameWithType.

Focus and Validation Events

When you change the focus by using the keyboard (TAB, SHIFT+TAB, and so on), by calling the xref:System.Windows.Forms.Control.Select%2A or xref:System.Windows.Forms.Control.SelectNextControl%2A methods, or by setting the xref:System.Windows.Forms.ContainerControl.ActiveControl%2A property to the current form, focus events of the xref:System.Windows.Forms.Control class occur in the following order:

  • xref:System.Windows.Forms.Control.Enter

  • xref:System.Windows.Forms.Control.GotFocus

  • xref:System.Windows.Forms.Control.Leave

  • xref:System.Windows.Forms.Control.Validating

  • xref:System.Windows.Forms.Control.Validated

  • xref:System.Windows.Forms.Control.LostFocus

When you change the focus by using the mouse or by calling the xref:System.Windows.Forms.Control.Focus%2A method, focus events of the xref:System.Windows.Forms.Control class occur in the following order:

  • xref:System.Windows.Forms.Control.Enter

  • xref:System.Windows.Forms.Control.GotFocus

  • xref:System.Windows.Forms.Control.LostFocus

  • xref:System.Windows.Forms.Control.Leave

  • xref:System.Windows.Forms.Control.Validating

  • xref:System.Windows.Forms.Control.Validated

See Also

Creating Event Handlers in Windows Forms