一、以下是网络上可搜索到的次序
当 Windows Form 应用程序启动时,会以下列顺序引发主要表单的启动事件:
System.Windows.Forms.Control.HandleCreated
System.Windows.Forms.Control.BindingContextChanged
System.Windows.Forms.Form.Load
System.Windows.Forms.Control.VisibleChanged
System.Windows.Forms.Form.Activated
System.Windows.Forms.Form.Shown
当应用程序关闭时,会以下列顺序引发主要表单的关闭事件:
System.Windows.Forms.Form.Closing
System.Windows.Forms.Form.FormClosing
System.Windows.Forms.Form.Closed
System.Windows.Forms.Form.FormClosed
System.Windows.Forms.Form.Deactivate
二、以下是我测试的次序,全部protected override 这些事件,并且在其base.的前后分别处理一次,如下
- protectedoverridevoidOnLoad(EventArgse)
- {
- textBox1.Text+="OnLoad1"+"/r/n";
- base.OnLoad(e);
- textBox1.Text+="OnLoad2"+"/r/n";
- }
OnClientSizeChanged1
OnClientSizeChanged2
OnClientSizeChanged1
OnClientSizeChanged2
// Loyout要多次执行
OnLayout1
OnLayout2
OnHanleCreated1
OnHanleCreated2
OnInvalidated1
OnInvalidated2
// 注意这里的一点点变化
OnCreateControl1
OnLoad1
OnLoad2
OnCreateControl2
//
OnLayout1
OnLayout2
OnActivated1
OnActivated2
OnShown1
OnShown2
OnPain1
OnPain2
希望这个次序能给大家带来用处。。可以在不同事件中去处理所需要的代码
三、以下是代码源。C# 2008 Express
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.ComponentModel;
- usingSystem.Data;
- usingSystem.Drawing;
- //usingSystem.Linq;
- usingSystem.Text;
- usingSystem.Windows.Forms;
- namespaceWindowsFormsApplication1
- {
- publicpartialclassForm1:Form
- {
- publicForm1()
- {
- InitializeComponent();
- }
- //输出窗体事件的执行次序
- protectedoverridevoidOnActivated(EventArgse)
- {
- textBox1.Text+="OnActivated1"+"/r/n";
- base.OnActivated(e);
- textBox1.Text+="OnActivated2"+"/r/n";
- }
- protectedoverridevoidOnClientSizeChanged(EventArgse)
- {
- textBox1.Text+="OnClientSizeChanged1"+"/r/n";
- base.OnClientSizeChanged(e);
- textBox1.Text+="OnClientSizeChanged2"+"/r/n";
- }
- protectedoverridevoidOnCreateControl()
- {
- textBox1.Text+="OnCreateControl1"+"/r/n";
- base.OnCreateControl();
- textBox1.Text+="OnCreateControl2"+"/r/n";
- }
- protectedoverridevoidOnDeactivate(EventArgse)
- {
- textBox1.Text+="OnDeactivate1"+"/r/n";
- base.OnDeactivate(e);
- textBox1.Text+="OnDeactivate2"+"/r/n";
- }
- protectedoverridevoidOnHandleCreated(EventArgse)
- {
- textBox1.Text+="OnHanleCreated1"+"/r/n";
- base.OnHandleCreated(e);
- textBox1.Text+="OnHanleCreated2"+"/r/n";
- }
- protectedoverridevoidOnHandleDestroyed(EventArgse)
- {
- textBox1.Text+="OnHanleDestoryed1"+"/r/n";
- base.OnHandleDestroyed(e);
- textBox1.Text+="OnHanleDestoryed2"+"/r/n";
- }
- protectedoverridevoidOnInvalidated(InvalidateEventArgse)
- {
- textBox1.Text+="OnInvalidated1"+"/r/n";
- base.OnInvalidated(e);
- textBox1.Text+="OnInvalidated2"+"/r/n";
- }
- protectedoverridevoidOnLayout(LayoutEventArgslevent)
- {
- textBox1.Text+="OnLayout1"+"/r/n";
- base.OnLayout(levent);
- textBox1.Text+="OnLayout2"+"/r/n";
- }
- protectedoverridevoidOnLoad(EventArgse)
- {
- textBox1.Text+="OnLoad1"+"/r/n";
- base.OnLoad(e);
- textBox1.Text+="OnLoad2"+"/r/n";
- }
- protectedoverridevoidOnPaint(PaintEventArgse)
- {
- textBox1.Text+="OnPain1"+"/r/n";
- base.OnPaint(e);
- textBox1.Text+="OnPain2"+"/r/n";
- }
- protectedoverridevoidOnShown(EventArgse)
- {
- textBox1.Text+="OnShown1"+"/r/n";
- base.OnShown(e);
- textBox1.Text+="OnShown2"+"/r/n";
- }
- }
- }