• Windows 窗体启动和关闭的事件顺序


    对于关注对 Windows 窗体应用程序中引发的每个事件按次序进行处理的开发人员来说,事件引发的顺序特别重要。当某种情况需要小心处理事件时(如重绘窗体的某些部分时),必须知道事件在运行时的确切引发顺序。本文提供了一些有关在应用程序和控件的生命周期中的几个重要阶段中的事件顺序的详细信息。

    对于验证这些事件的激发顺序有一个很简单的方法,就是创建这些事件的处理函数,即使什么事情都不做。然后在每个函数的入口处设置断点,对程序进行调试运行,看到达断点顺序就可以了。

    当 Windows 窗体应用程序启动时,主窗体的启动事件按以下顺序引发

    1、System.Windows.Forms.Control.HandleCreated
      在为控件创建句柄时发生

    2、System.Windows.Forms.Control.BindingContextChanged 
      当 BindingContext 属性的值更改时发生
      注:每个 Windows 窗体至少有一个 BindingContext 对象,详见MSDN

    3、System.Windows.Forms.Form.Load 
      在第一次显示窗体前发生

    4、System.Windows.Forms.Control.VisibleChanged 
      在 Visible 属性值更改时发生
      注:如果通过编程修改或用户交互更改 Visible 属性,则将引发此事件

    5、System.Windows.Forms.Form.Activated 
      当使用代码激活或用户激活窗体时发生

    6、System.Windows.Forms.Form.Shown 
      只有在首次显示窗体时才会引发 Shown 事件;随后执行的最小化、最大化、还原、隐藏、显示或无效化和重新绘制操作都不会引发该事件。

    当应用程序关闭时,主窗体的关闭事件按以下顺序引发:

    1、System.Windows.Forms.Form.Closing 
      在关闭窗体时发生
      注意:在 .NET Framework 版本 2.0 中,Closing 事件已过时,应改用 FormClosing 事件。

    2、System.Windows.Forms.Form.FormClosing 
      在关闭窗体前发生,此时可以取消窗体的关闭。

    3、System.Windows.Forms.Form.Closed 
      关闭窗体后发生
      注意:在 .NET Framework 版本 2.0 中,Closed 事件已过时,应改用 FormClosed 事件。

    4、System.Windows.Forms.Form.FormClosed 
      关闭窗体后发生

    5、System.Windows.Forms.Form.Deactivate 
      当窗体失去焦点并不再是活动窗体时发生

    注意:当调用 Application.Exit 方法以退出应用程序时,不引发 Form.Closed 和 Form.Closing 事件,但是会激发 Form.FormClosed 和 Form.FormClosing 事件。

  • 相关阅读:
    Linux Shell 1>/dev/null 2>&1 含义
    iSCSI存储的3种连接方式
    Linux Shell远程执行命令(命令行与脚本方式)
    VIM常用命令
    RHEL6.2配置从零开始
    shell 正则表达式与文件名匹配
    Java中判断非空对象.
    Facebook的时序数据库技术(上)
    SpringBoot+SpringCache实现两级缓存(Redis+Caffeine)
    Swagger模型字段排序问题
  • 原文地址:https://www.cnblogs.com/chenliyang/p/6548953.html
Copyright © 2020-2023  润新知