Winforms - 加载和激活事件的顺序

Han*_*nsA 11 .net events load winforms

我们的一个用户在日志为我们的.NET WinForms应用程序,指示已派出Activated事件发生之前Load事件.我不认为这是可能的,并且已经编码了Load以前总会发生的假设Activated.

还有其他观察者Activated发生过Load吗?

如果是这样,为什么并且有什么方法可以确保它不会发生?

Ash*_*Ash 20

来自MSDN 中Windows窗体的事件顺序:

应用程序启动和关闭事件

Form和Control类公开了一组与应用程序启动和关闭相关的事件.当Windows窗体应用程序启动时,主窗体的启动事件按以下顺序引发:

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

您是否在任何启动事件中使用MessageBox?由于Windows窗体消息循环处理对话框窗口的方式,这可能导致事件看起来不按顺序触发.


MRG*_*MRG 2

激活发生在加载之前。如果你想编写一些应该在加载后执行的代码,那么你可以使用显示的方法。

请在下面找到顺序:

  • 活性
  • 加载
  • 如图所示

编辑:请检查这个非常有趣的答案,它解释了 WinForms Load 与 Shown events

编辑:我现在已经使用单个 winform 创建了一个默认的 Winform 项目。现在它给了我序列

  • 加载
  • 活性
  • 如图所示

我现在很困惑。