当前位置:文档之家› C#WinForm窗体事件执行次序(较完整版)

C#WinForm窗体事件执行次序(较完整版)

C#WinForm窗体事件执行次序(较完整版)
一、以下是网络上可搜索到的次序
当Windows Form应用程序启动时,会以下列顺序引发主要表单的启动事件:
System.Windows.Forms.Control.HandleCreated
System.Windows.Forms.Control.BindingContextChangedSystem.Windows.Form s.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.的前后分别处理一次,如下
view sourceprint?
1protectedoverridevoidOnLoad(EventArgs e)
2{
3textBox1.Text += "OnLoad1"+ "\r\n";
4base.OnLoad(e);
5textBox1.Text += "OnLoad2"+ "\r\n"; 6}
OnClientSizeChanged1 OnClientSizeChanged2 OnClientSizeChanged1 OnClientSizeChanged2
// Loyout要多次执行
OnLayout1
OnLayout2
OnHanleCreated1 OnHanleCreated2
OnInvalidated1
OnInvalidated2
//注意这里的一点点变化OnCreateControl1
OnLoad1
OnLoad2
OnCreateControl2
//
OnLayout1
OnLayout2
OnActivated1
OnActivated2
OnShown1
OnShown2
OnPain1
OnPain2
希望这个次序能给大家带来用处。

可以在不同事件中去处理所需要的代码
三、以下是代码源
view sourceprint?
01usingSystem;
02usingSystem.Collections.Generic;
ponentModel;
04usingSystem.Data;
05usingSystem.Drawing;
06usingSystem.Text;
07usingSystem.Windows.Forms;
08
09namespaceWindowsFormsApplication1
10{
11publicpartialclassForm1 : Form
12{
13publicForm1()
14{
15InitializeComponent();
16}
17
18/*
19*输出窗体事件的执行次序
20*/
21
22protectedoverridevoidOnActivated(EventArgs e)
23{
24textBox1.Text += "OnActivated1"+ "\r\n";
25base.OnActivated(e);
26textBox1.Text += "OnActivated2"+ "\r\n";
27}
28
29protectedoverridevoidOnClientSizeChanged(EventArgs e)30{
31textBox1.Text += "OnClientSizeChanged1"+
"\r\n";32base.OnClientSizeChanged(e);
33textBox1.Text += "OnClientSizeChanged2"+ "\r\n";34}
35
36protectedoverridevoidOnCreateControl()
37{
38textBox1.Text += "OnCreateControl1"+ "\r\n";
39base.OnCreateControl();
40textBox1.Text += "OnCreateControl2"+ "\r\n";
41}
42
43protectedoverridevoidOnDeactivate(EventArgs e)
44{
45textBox1.Text += "OnDeactivate1"+ "\r\n";
46base.OnDeactivate(e);
47textBox1.Text += "OnDeactivate2"+ "\r\n";
48}
49
50protectedoverridevoidOnHandleCreated(EventArgs e)51{ 52textBox1.Text += "OnHanleCreated1"+ "\r\n";
53base.OnHandleCreated(e);
54textBox1.Text += "OnHanleCreated2"+ "\r\n";
55}
56
57protectedoverridevoidOnHandleDestroyed(EventArgs e)58{
59textBox1.Text += "OnHanleDestoryed1"+
"\r\n";60base.OnHandleDestroyed(e);
61textBox1.Text += "OnHanleDestoryed2"+ "\r\n";62}
63
64protectedoverridevoidOnInvalidated(InvalidateEventArgse)65{ 66textBox1.Text += "OnInvalidated1"+ "\r\n";
67base.OnInvalidated(e);
68textBox1.Text += "OnInvalidated2"+ "\r\n";
69}
70
71protectedoverridevoidOnLayout(LayoutEventArgs levent)72{ 73textBox1.Text += "OnLayout1"+ "\r\n";
74base.OnLayout(levent);
75textBox1.Text += "OnLayout2"+ "\r\n";
76}
77
78protectedoverridevoidOnLoad(EventArgs e)
79{
80textBox1.Text += "OnLoad1"+ "\r\n";
81base.OnLoad(e);
82textBox1.Text += "OnLoad2"+ "\r\n";
83}
84
85protectedoverridevoidOnPaint(PaintEventArgs e)
86{
87textBox1.Text += "OnPain1"+ "\r\n";
88base.OnPaint(e);
89textBox1.Text += "OnPain2"+ "\r\n";
90}
91
92protectedoverridevoidOnShown(EventArgs e)
93{
94textBox1.Text += "OnShown1"+ "\r\n";
95base.OnShown(e);
96textBox1.Text += "OnShown2"+ "\r\n";
97}
98}
99}
本文来自CSDN博客,转载请标明出处:
/neok/archive/2009/09/29/4616265.aspx。

相关主题