C# Windows Forms 事件处理顺序
2015-03-13 11:18
211 查看
事件引发的顺序对某些Windows 窗体应用来说十分重要。当某些事件需要特别处理时(如重绘窗体的某些部分),必须知道事件在运行时的确切引发顺序。下面就应用程序和控件的生命周期中的几个重要阶段的事件顺序进行详细讨论。
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事件在主窗体关闭事件之后引发。
Enter
GotFocus
Leave
Validating
Validated
LostFocus
当使用鼠标或通过调用Focus方法更改焦点时,Control类的聚焦事件发生顺序为:
Enter
GotFocus
Leave
Validting
Validated
应用程序的启动和关闭
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控件的焦点事件顺序
- c# windows form 生命周期 (Life cycle) 事件 顺序
- C#复合控件获取值,及事件一处理顺顺序
- Order of Events in Windows Forms——Windows Foms 事件加载顺序
- c# windows form 生命周期 (Life cycle) 事件 顺序
- 在 Visual C# .NET 中处理 Windows 窗体中 Office XP 电子表格组件的事件
- Netty长连接的事件处理顺序问题
- Data Entry and Validation with C# and VB. NET Windows Forms
- 如何使用 Visual C# .NET 处理 Excel 事件
- C#中的System.Windows.Forms.Timer,System.Tiemrs.Timer,System.Thread.Timer,System.Web.UI.Timer
- C#处理鼠标和键盘事件
- C#处理Paint事件的方法
- 背水一战 Windows 10 (79) - 自定义控件: Layout 系统, 控件模板, 事件处理
- C#中事件处理的个人体会
- C#中事件处理的个人体会
- 专家分享-C#中事件处理的个人体会
- C#继承窗口的事件处理
- asp.net(C#)页面事件顺序
- C#处理窗体的最小化事件及恢复正常窗体事件
- 使用c#捕获windows的关机事件