我们的一个用户在日志为我们的.NET WinForms应用程序,指示已发送Activated
事件在发生之前 Load
事件。 我不认为这是可能的,并已在假设编码Load
会经常发生之前Activated
。
有没有其他人观察到Activated
前发生的Load
?
如果是这样,为什么,有没有什么办法,以确保它不会发生?
我们的一个用户在日志为我们的.NET WinForms应用程序,指示已发送Activated
事件在发生之前 Load
事件。 我不认为这是可能的,并已在假设编码Load
会经常发生之前Activated
。
有没有其他人观察到Activated
前发生的Load
?
如果是这样,为什么,有没有什么办法,以确保它不会发生?
从Windows中活动的定货单在MSDN:
应用程序启动和关闭事件
该窗体和控件类公开了一组相关的应用程序启动和关闭事件。 当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
您是否使用您的任何启动事件的一个消息? 这可能会导致事件出现触发无序因为方式的Windows窗体消息循环来处理对话窗口。
活性炭负载来之前。 如果你想写一个应该载入那么你可以使用的方法不同后执行一些代码。
请找到序列如下:
- 活性
- 加载
- 显示
编辑:请检查这个非常有趣的答案在SO这也解释了的WinForms负荷对显示的事件
编辑:我现在已经创建了一个WinForm的一个默认的Winform项目。 现在,它给我的序列
- 加载
- 活性
- 显示
我现在很困惑。
尽管它违背了微软的文档,这可以当您从形式外部访问装载形式的公共变量或函数时有发生。 如果有必要,可以在显示事件设置一个标志,并用它的形式加载之前退出启动处理程序。