转载:C#WinForm窗体事件执行次序(较完整版)
一、以下是网络上可搜索到的次序
当 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.的前后分别处理一次,如下
- protected override void OnLoad(EventArgs e)
- {
- 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
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- // using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- // 输出窗体事件的执行次序
- protected override void OnActivated(EventArgs e)
- {
- textBox1.Text += "OnActivated1" + "/r/n";
- base.OnActivated(e);
- textBox1.Text += "OnActivated2" + "/r/n";
- }
- protected override void OnClientSizeChanged(EventArgs e)
- {
- textBox1.Text += "OnClientSizeChanged1" + "/r/n";
- base.OnClientSizeChanged(e);
- textBox1.Text += "OnClientSizeChanged2" + "/r/n";
- }
- protected override void OnCreateControl()
- {
- textBox1.Text += "OnCreateControl1" + "/r/n";
- base.OnCreateControl();
- textBox1.Text += "OnCreateControl2" + "/r/n";
- }
- protected override void OnDeactivate(EventArgs e)
- {
- textBox1.Text += "OnDeactivate1" + "/r/n";
- base.OnDeactivate(e);
- textBox1.Text += "OnDeactivate2" + "/r/n";
- }
- protected override void OnHandleCreated(EventArgs e)
- {
- textBox1.Text += "OnHanleCreated1" + "/r/n";
- base.OnHandleCreated(e);
- textBox1.Text += "OnHanleCreated2" + "/r/n";
- }
- protected override void OnHandleDestroyed(EventArgs e)
- {
- textBox1.Text += "OnHanleDestoryed1" + "/r/n";
- base.OnHandleDestroyed(e);
- textBox1.Text += "OnHanleDestoryed2" + "/r/n";
- }
- protected override void OnInvalidated(InvalidateEventArgs e)
- {
- textBox1.Text += "OnInvalidated1" + "/r/n";
- base.OnInvalidated(e);
- textBox1.Text += "OnInvalidated2" + "/r/n";
- }
- protected override void OnLayout(LayoutEventArgs levent)
- {
- textBox1.Text += "OnLayout1" + "/r/n";
- base.OnLayout(levent);
- textBox1.Text += "OnLayout2" + "/r/n";
- }
- protected override void OnLoad(EventArgs e)
- {
- textBox1.Text += "OnLoad1" + "/r/n";
- base.OnLoad(e);
- textBox1.Text += "OnLoad2" + "/r/n";
- }
- protected override void OnPaint(PaintEventArgs e)
- {
- textBox1.Text += "OnPain1" + "/r/n";
- base.OnPaint(e);
- textBox1.Text += "OnPain2" + "/r/n";
- }
- protected override void OnShown(EventArgs e)
- {
- textBox1.Text += "OnShown1" + "/r/n";
- base.OnShown(e);
- textBox1.Text += "OnShown2" + "/r/n";
- }
- }
- }
转载于:https://www.cnblogs.com/TGRC/archive/2013/02/19/2916672.html
转载:C#WinForm窗体事件执行次序(较完整版)相关推荐
- 【权威发布】360天眼实验室:Xshell被植入后门代码事件分析报告(完整版)
本文由 安全客 原创发布,如需转载请注明来源及本文地址. 本文地址:http://bobao.360.cn/learning/detail/4278.html 文档信息 事件概要 事件简述 近日,非常 ...
- 用matlab可以完成事件调度法么,(完整版)MM1排队系统仿真matlab实验报告
M/M/1排队系统实验报告 一.实验目的 本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比. ...
- exe程序嵌入Winform窗体(转载)
1.新建winform程序,添加一个Panel控件和一个button控件,winform窗体命名为:Mainform: 2.新建一个类文件,方便引用,命名为:exetowinform: 3.Mainf ...
- C#使用事件方式Winform窗体之间传值
[摘自:http://www.cnblogs.com/codeToUp/p/5371062.html] 工程的源代码地址:https://github.com/yes-or-no/WinFormTra ...
- WinForm窗体间如何传值
窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 公共静态变量: 使用共有属性: 使用委托与事件: 通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点:传值是双 ...
- 如何在多线程中调用winform窗体控件2——实例篇
如何在多线程中调用winform窗体控件2--实例篇 针对之前文章<如何在多线程中调用winform窗体控件>,下面举个我项目中的实际案例,这是一个我自定义控件在异步设置焦点时的代码.在新 ...
- 重绘Winform窗体
本文转载自:http://www.cnblogs.com/encoding/p/5603080.html 按照惯例,先来几张样例图(注:为了展示窗口阴影效果,截图范围向外扩展了些,各位凭想象吧). 还 ...
- c# winform 扁平化窗口_C# 如何在winform窗体自定义一个扁平化控件(转)
标签:art 扁平化 一个 winform 最小 none 协议 ati 最小化 需求说明:如图所示 步骤: (1) FormBorderStyle 设置为 Non ...
- winformbutton边框怎么改_C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法
C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法 1.新建组件这里可以自定义一个Panel控件起名为PanelEx 2.增加一个BoderColor属性和BoderSize属性 pr ...
最新文章
- PHP高性能分布式应用服务器框架-SwooleDistributed
- 【翻译】了解Ext JS 5的小部件
- codeforces 480B B. Long Jumps(贪心)
- 推荐系统CTR预估学习路线:深度模型
- 数论--中国剩余定理模板
- 修改Advance Template Jsp模板的编码格式
- 下载并安装Redis教程
- 正则表达式 Java
- global mapper导出影像范围
- c/c++实现带图形界面的扫雷游戏
- 会声会影如何去除视频黑边
- KKT(Karush-Kuhn-Tucher)条件
- 树莓派浏览网页,显示无法打开此网址
- 《解忧杂货店》-东野圭吾
- Spring认证指南:如何构建使用Spring Integration来获取数据
- JS高级前端开发群加群说明及如何晋级
- java编程实现删除一个文件夹_Java实现文件夹删除方式总结详解
- 学习gm-crypt和sm-crypto加密解密的一天
- 提高数据处理速度_气相色谱仪用数据处理
- python人脸识别代码是什么_几行代码带你实现人脸识别。Python 就是这么简单
热门文章
- 强连通图------(1)通过两次DFS或BFS判断是不是强连通图
- OpenGL基础39:GLSL内建变量与接口块
- ZOJ 3987 2017CCPC秦皇岛 G:Numbers(高精度+贪心)
- bzoj 2435: [Noi2011]道路修建(DFS)
- [python] 字典:按key排序或按value排序
- ubuntu下c++中base64编解码测试和图片编解码测试
- python机器学习库sklearn——K最近邻、K最近邻分类、K最近邻回归
- matlab2c使用c++实现matlab函数系列教程-mean函数
- quartus仿真27:JK触发器构成的同步二进制加法计数器(分析)
- asp.net2.0 GridView 导出到 Excel