C# Windows Forms 事件处理顺序
事件引发的顺序对某些Windows 窗体应用来说十分重要。当某些事件需要特别处理时(如重绘窗体的某些部分),必须知道事件在运行时的确切引发顺序。下面就应用程序和控件的生命周期中的几个重要阶段的事件顺序进行详细讨论。
应用程序的启动和关闭
Form和Control类有一组和程序启动和关闭先关的事件。当Windows Forms程序启动时,主窗体的启动事件按以下顺序引发:
- Control.HandleCreated
为控件创建句柄时发生,在首次显示Control时会创建句柄。例如,如果创建的Control但其Visible属性设置为false,则HandleCreated不会引发,直到Visiable 设置为true才引发。 - Control.BindingContextChanged
BindingContext属性值改变时引发. - Form.Load
Form首次显示时引发,可以通过该事件分配窗体使用的资源等任务。 - Control.VisibleChanged
Visible属性改变时引发。 - Form.Activated
当窗体激活时引发,当应用程序处于活动状态并且有多个Form,则活动的窗体时具有输入焦点的窗体。不可见的窗体不能成为活动窗体。激活form最简单的方法时单击它。
在运行时激活Form,使用Activate方法。可以使用此事件处理一些任务,如根据form在未激活时对窗体数据所做的更改来更新窗体内容。 - Form.Shown
form首次显示时引发,而在随后的最小化、最大化、还原、隐藏或无效化和重新绘制都不会引发该事件
当Windows Forms程序关闭时,主窗体的关闭事件按以下顺序引发:
- Form.Closing
- Form.FormClosing
- Form.Cloed
- Form.FormClosed
- Form.Deactivate
Application类的ApplicationExit事件在主窗体关闭事件之后引发。
聚焦和验证事件
当通过使用键盘(TAB,Shift+Tab等)、调用Select或SelectNextControl方法、或将ActiveControl属性设置为当前窗体等方法更改焦点时,Control类的聚焦事件按以下顺序发生:
- Enter
- GotFocus
- Leave
- Validating
- Validated
- LostFocus
当使用鼠标或通过调用Focus方法更改焦点时,Control类的聚焦事件发生顺序为:
- Enter
- GotFocus
- Leave
- Validting
- Validated
C# Windows Forms 事件处理顺序的更多相关文章
- Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架
最近因项目需要,我自己设计开发了一个基于Windows Forms的向导开发框架,目前我已经将其开源,并发布了一个NuGet安装包.比较囧的一件事是,当我发布了NuGet安装包以后,发现原来已经有一个 ...
- Windows Forms (一)
导读 1.什么是 Windows Forms 2.需要学Windows Forms 么? 3.如何手写一个简单的Windows Forms 程序 4.对上面程序的说明 5.Form 类与Control ...
- System.Windows.Forms.Control : Component, IOleControl, IOleObject, IOleInPlaceObject, IOleInPlaceActiveObject....
#region 程序集 System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ...
- System.Windows.Forms.ListView : Control
#region 程序集 System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ...
- Windows Forms编程实战学习:第三章 菜单
第三章 菜单 1,控件和容器 所有的Windows Forms控件都是从System.Windows.Forms.Control类继承的,相关类的层次结构如下图所示: MarshalByRefObje ...
- Windows Forms 对话框篇
1,标准对话框 Windows内置的对话框,又叫公用对话框,它们作为组件提供的,并且存在于System.Windows.Forms命名空间中. 手工方式: private void button1_C ...
- windows forms 上一个类似于wpf snoop 的工具: Hawkeye
windows forms 上一个类似于wpf snoop 的工具: Hawkeye 周银辉 WPF上有snoop这样的run time object editor让人用着很爽, 今天搜到了一个for ...
- WPF中实例化Com组件,调用组件的方法时报System.Windows.Forms.AxHost+InvalidActiveXStateException的异常
WPF中实例化Com组件,调用组件的方法时报System.Windows.Forms.AxHost+InvalidActiveXStateException的异常 在wpf中封装Com组件时,调用组件 ...
- DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版及制作Visual Studio C#项目模板文件详解
关于 DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
随机推荐
- [转]Linux环境下查看线程数的几种方法
1.cat /proc/${pid}/status 2.pstree -p ${pid} 3.top -p ${pid} 再按H,或者直接输入 top -bH -d 3 -p ${pid} top ...
- SQL 查看数据库表的容量大小
--==============查看数据库表的容量大小========start================================?============ Create Table # ...
- Redis服务停止报错解决方案[NOAUTH Authentication required]
Redis服务器设置密码后,使用service redis stop 会出现以下信息: service redis stop Stopping ... OK (error) NOAUTH Authen ...
- Mongodb集群搭建及spring和java连接配置记录
一.基本环境: mongdb3.0.5数据库 spring-data-mongodb-1.7.2.jar mongo-java-driver-3.0.2.jar linux-redhat6.3 tom ...
- 黄聪:如何阻止iframe里引用的网页自动跳转
今天做了个网页,要在网页里设置一个iframe,然后套用其他的网站.使用http://luanqi-cat.blogbus.com 这个网址的时候,出现了莫名其妙的问题,我的网页居然会强制自动跳转到这 ...
- 黄聪:wordpress如何开启文章格式post format
发现很多“古老”的WordPress主题使用量非常大,虽然部分也在随着WordPress版本的升级而“升级”,只不过是修复了bug而已,wordpress的新特性并没有使用.而且多数国内的wordpr ...
- 案例:用Redis来存储关注关系(php版)
Redis提供了丰富的数据类型,比起关系型数据库或者简单的Key-Value存储(比如Memcached)来,Redis的数据模型与实际应用的数据模型更相近.比如下面说到的好友关系的存储,原作者使用了 ...
- (C/C++) Interview in English. - Memory Allocation/Deallocation.
Q: What is the difference between new/delete and malloc/free? A: Malloc/free do not know about const ...
- 开发高峰时的CPU使用率
- PLSQL_闪回操作2_Fashback Version Query
2014-12-09 Created By BaoXinjian