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

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

C#WinForm窗体事件执行次序(较完整版)一、以下是网络上可搜索到的次序当Windows Form 应用程序启动时,会以下列顺序引发主要表单的启动事件:System.Windows.Forms.Control.HandleCreatedSystem.Windows.Forms.Control.BindingContextChangedSystem.Windows.Forms.Form.LoadSystem.Windows.Forms.Control.VisibleChangedSystem.Windows.Forms.Form.ActivatedSystem.Windows.Forms.Form.Shown当应用程序关闭时,会以下列顺序引发主要表单的关闭事件:System.Windows.Forms.Form.ClosingSystem.Windows.Forms.Form.FormClosingSystem.Windows.Forms.Form.ClosedSystem.Windows.Forms.Form.FormClosedSystem.Windows.Forms.Form.Deactivate二、以下是我测试的次序,全部protected override 这些事件,并且在其base.的前后分别处理一次,如下view sourceprint?1protected override void OnLoad(EventArgs e)2{3 textBox1.Text += "OnLoad1"+ "\r\n";4 base.OnLoad(e);5 textBox1.Text += "OnLoad2"+ "\r\n";6}OnClientSizeChanged1OnClientSizeChanged2OnClientSizeChanged1OnClientSizeChanged2// Loyout要多次执行OnLayout1OnLayout2OnHanleCreated1OnHanleCreated2OnInvalidated1OnInvalidated2// 注意这里的一点点变化OnCreateControl1OnLoad1OnLoad2OnCreateControl2//OnLayout1OnLayout2OnActivated1OnActivated2OnShown1OnShown2OnPain1OnPain2希望这个次序能给大家带来用处。

可以在不同事件中去处理所需要的代码三、以下是代码源view sourceprint?01using System;02using System.Collections.Generic;03using ponentModel;04using System.Data;05using System.Drawing;06using System.Text;07using System.Windows.Forms;0809namespace WindowsFormsApplication110{11 public partial class Form1 : Form12 {13 public Form1()14 {15 InitializeComponent();16 }1718 /*19 * 输出窗体事件的执行次序20 */2122 protected override void OnActivated(EventArgs e)23 {24 textBox1.Text += "OnActivated1"+ "\r\n";25 base.OnActivated(e);26 textBox1.Text += "OnActivated2"+ "\r\n";27 }2829 protected override void OnClientSizeChanged(EventArgs e)30 {31 textBox1.Text += "OnClientSizeChanged1"+ "\r\n";32 base.OnClientSizeChanged(e);33 textBox1.Text += "OnClientSizeChanged2"+ "\r\n";34 }3536 protected override void OnCreateControl()37 {38 textBox1.Text += "OnCreateControl1"+ "\r\n";39 base.OnCreateControl();40 textBox1.Text += "OnCreateControl2"+ "\r\n";41 }4243 protected override void OnDeactivate(EventArgs e)44 {45 textBox1.Text += "OnDeactivate1"+ "\r\n";46 base.OnDeactivate(e);47 textBox1.Text += "OnDeactivate2"+ "\r\n";48 }4950 protected override void OnHandleCreated(EventArgs e)51 {52 textBox1.Text += "OnHanleCreated1"+ "\r\n";53 base.OnHandleCreated(e);54 textBox1.Text += "OnHanleCreated2"+ "\r\n";55 }5657 protected override void OnHandleDestroyed(EventArgs e)58 {59 textBox1.Text += "OnHanleDestoryed1"+ "\r\n";60 base.OnHandleDestroyed(e);61 textBox1.Text += "OnHanleDestoryed2"+ "\r\n";62 }6364 protected override void OnInvalidated(InvalidateEventArgs e)65 {66 textBox1.Text += "OnInvalidated1"+ "\r\n";67 base.OnInvalidated(e);68 textBox1.Text += "OnInvalidated2"+ "\r\n";69 }7071 protected override void OnLayout(LayoutEventArgs levent)72 {73 textBox1.Text += "OnLayout1"+ "\r\n";74 base.OnLayout(levent);75 textBox1.Text += "OnLayout2"+ "\r\n";76 }7778 protected override void OnLoad(EventArgs e)79 {80 textBox1.Text += "OnLoad1"+ "\r\n";81 base.OnLoad(e);82 textBox1.Text += "OnLoad2"+ "\r\n";83 }8485 protected override void OnPaint(PaintEventArgs e)86 {87 textBox1.Text += "OnPain1"+ "\r\n";88 base.OnPaint(e);89 textBox1.Text += "OnPain2"+ "\r\n";90 }9192 protected override void OnShown(EventArgs e)93 {94 textBox1.Text += "OnShown1"+ "\r\n";95 base.OnShown(e);96 textBox1.Text += "OnShown2"+ "\r\n";97 }98 }99}本文来自CSDN博客,转载请标明出处:/neok/archive/2009/09/29/4616265.aspx。

相关主题