一、以下是网络上可搜索到的次序

当 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.的前后分别处理一次,如下

[c-sharp] view plaincopy
  1. protected override void OnLoad(EventArgs e)
  2. {
  3. textBox1.Text += "OnLoad1" + "/r/n";
  4. base.OnLoad(e);
  5. textBox1.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

希望这个次序能给大家带来用处。。可以在不同事件中去处理所需要的代码

三、以下是代码源。C# 2008 Express

[c-sharp] view plaincopy
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. // using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. namespace WindowsFormsApplication1
  10. {
  11. public partial class Form1 : Form
  12. {
  13. public Form1()
  14. {
  15. InitializeComponent();
  16. }
  17. // 输出窗体事件的执行次序
  18. protected override void OnActivated(EventArgs e)
  19. {
  20. textBox1.Text +=  "OnActivated1" + "/r/n";
  21. base.OnActivated(e);
  22. textBox1.Text += "OnActivated2" + "/r/n";
  23. }
  24. protected override void OnClientSizeChanged(EventArgs e)
  25. {
  26. textBox1.Text += "OnClientSizeChanged1" + "/r/n";
  27. base.OnClientSizeChanged(e);
  28. textBox1.Text += "OnClientSizeChanged2" + "/r/n";
  29. }
  30. protected override void OnCreateControl()
  31. {
  32. textBox1.Text += "OnCreateControl1" + "/r/n";
  33. base.OnCreateControl();
  34. textBox1.Text += "OnCreateControl2" + "/r/n";
  35. }
  36. protected override void OnDeactivate(EventArgs e)
  37. {
  38. textBox1.Text += "OnDeactivate1" + "/r/n";
  39. base.OnDeactivate(e);
  40. textBox1.Text += "OnDeactivate2" + "/r/n";
  41. }
  42. protected override void OnHandleCreated(EventArgs e)
  43. {
  44. textBox1.Text += "OnHanleCreated1" + "/r/n";
  45. base.OnHandleCreated(e);
  46. textBox1.Text += "OnHanleCreated2" + "/r/n";
  47. }
  48. protected override void OnHandleDestroyed(EventArgs e)
  49. {
  50. textBox1.Text += "OnHanleDestoryed1" + "/r/n";
  51. base.OnHandleDestroyed(e);
  52. textBox1.Text += "OnHanleDestoryed2" + "/r/n";
  53. }
  54. protected override void OnInvalidated(InvalidateEventArgs e)
  55. {
  56. textBox1.Text += "OnInvalidated1" + "/r/n";
  57. base.OnInvalidated(e);
  58. textBox1.Text += "OnInvalidated2" + "/r/n";
  59. }
  60. protected override void OnLayout(LayoutEventArgs levent)
  61. {
  62. textBox1.Text += "OnLayout1" + "/r/n";
  63. base.OnLayout(levent);
  64. textBox1.Text += "OnLayout2" + "/r/n";
  65. }
  66. protected override void OnLoad(EventArgs e)
  67. {
  68. textBox1.Text += "OnLoad1" + "/r/n";
  69. base.OnLoad(e);
  70. textBox1.Text += "OnLoad2" + "/r/n";
  71. }
  72. protected override void OnPaint(PaintEventArgs e)
  73. {
  74. textBox1.Text += "OnPain1" + "/r/n";
  75. base.OnPaint(e);
  76. textBox1.Text += "OnPain2" + "/r/n";
  77. }
  78. protected override void OnShown(EventArgs e)
  79. {
  80. textBox1.Text += "OnShown1" + "/r/n";
  81. base.OnShown(e);
  82. textBox1.Text += "OnShown2" + "/r/n";
  83. }
  84. }
  85. }

转载于:https://www.cnblogs.com/TGRC/archive/2013/02/19/2916672.html

转载:C#WinForm窗体事件执行次序(较完整版)相关推荐

  1. 【权威发布】360天眼实验室:Xshell被植入后门代码事件分析报告(完整版)

    本文由 安全客 原创发布,如需转载请注明来源及本文地址. 本文地址:http://bobao.360.cn/learning/detail/4278.html 文档信息 事件概要 事件简述 近日,非常 ...

  2. 用matlab可以完成事件调度法么,(完整版)MM1排队系统仿真matlab实验报告

    M/M/1排队系统实验报告 一.实验目的 本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比. ...

  3. exe程序嵌入Winform窗体(转载)

    1.新建winform程序,添加一个Panel控件和一个button控件,winform窗体命名为:Mainform: 2.新建一个类文件,方便引用,命名为:exetowinform: 3.Mainf ...

  4. C#使用事件方式Winform窗体之间传值

    [摘自:http://www.cnblogs.com/codeToUp/p/5371062.html] 工程的源代码地址:https://github.com/yes-or-no/WinFormTra ...

  5. WinForm窗体间如何传值

    窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 公共静态变量: 使用共有属性: 使用委托与事件: 通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点:传值是双 ...

  6. 如何在多线程中调用winform窗体控件2——实例篇

    如何在多线程中调用winform窗体控件2--实例篇 针对之前文章<如何在多线程中调用winform窗体控件>,下面举个我项目中的实际案例,这是一个我自定义控件在异步设置焦点时的代码.在新 ...

  7. 重绘Winform窗体

    本文转载自:http://www.cnblogs.com/encoding/p/5603080.html 按照惯例,先来几张样例图(注:为了展示窗口阴影效果,截图范围向外扩展了些,各位凭想象吧). 还 ...

  8. c# winform 扁平化窗口_C# 如何在winform窗体自定义一个扁平化控件(转)

    标签:art   扁平化   一个   winform   最小   none   协议   ati   最小化 需求说明:如图所示 步骤: (1)   FormBorderStyle 设置为 Non ...

  9. winformbutton边框怎么改_C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法

    C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法 1.新建组件这里可以自定义一个Panel控件起名为PanelEx 2.增加一个BoderColor属性和BoderSize属性 pr ...

最新文章

  1. PHP高性能分布式应用服务器框架-SwooleDistributed
  2. 【翻译】了解Ext JS 5的小部件
  3. codeforces 480B B. Long Jumps(贪心)
  4. 推荐系统CTR预估学习路线:深度模型
  5. 数论--中国剩余定理模板
  6. 修改Advance Template Jsp模板的编码格式
  7. 下载并安装Redis教程
  8. 正则表达式 Java
  9. global mapper导出影像范围
  10. c/c++实现带图形界面的扫雷游戏
  11. 会声会影如何去除视频黑边
  12. KKT(Karush-Kuhn-Tucher)条件
  13. 树莓派浏览网页,显示无法打开此网址
  14. 《解忧杂货店》-东野圭吾
  15. Spring认证指南:如何构建使用Spring Integration来获取数据
  16. JS高级前端开发群加群说明及如何晋级
  17. java编程实现删除一个文件夹_Java实现文件夹删除方式总结详解
  18. 学习gm-crypt和sm-crypto加密解密的一天
  19. 提高数据处理速度_气相色谱仪用数据处理
  20. python人脸识别代码是什么_几行代码带你实现人脸识别。Python 就是这么简单

热门文章

  1. 强连通图------(1)通过两次DFS或BFS判断是不是强连通图
  2. OpenGL基础39:GLSL内建变量与接口块
  3. ZOJ 3987 2017CCPC秦皇岛 G:Numbers(高精度+贪心)
  4. bzoj 2435: [Noi2011]道路修建(DFS)
  5. [python] 字典:按key排序或按value排序
  6. ubuntu下c++中base64编解码测试和图片编解码测试
  7. python机器学习库sklearn——K最近邻、K最近邻分类、K最近邻回归
  8. matlab2c使用c++实现matlab函数系列教程-mean函数
  9. quartus仿真27:JK触发器构成的同步二进制加法计数器(分析)
  10. asp.net2.0 GridView 导出到 Excel