【发布时间】:2010-09-28 16:02:05
【问题描述】:
希望我只是遗漏了一些明显的东西,但我试图弄清楚 Windows Forms 中 Load 和 Shown 事件之间的差异。
传统上,我只使用了 Load(或者实际上是 OnLoad,因为我认为重写一个方法比依赖设计者自己连接一个事件更干净),因为它在所有版本的 .NET 中都可用.在 .NET 2.0 中引入了 Shown 事件。
现在,如果您在 MSDN 文档中查看这些描述(“加载:在第一次显示表单之前发生。”,“显示:在第一次显示表单时发生。”)它 听起来应该发生 Load 事件,然后表单应该变得可见,然后应该发生 Shown 事件;两者的结合使您可以在表格可见之前和之后执行一些任务。有道理,对吧?
然而,实验表明 Shown 事件总是发生在 在 Load 事件之前,无论何时我尝试它(并且两者都发生在表单变得可见之前)。然而,每当我发现一个页面讨论这些事件的触发顺序时,他们总是会列出最先触发的 Load 事件。
我是不是快疯了,还是我错过了什么? (如果它们确实几乎同时发生,那么为什么首先添加 Shown 事件?)
(我目前在显示表单之前和之后做某事的解决方案是使用 OnLoad 来处理“显示之前”的内容,并为“显示之后”的内容启动一个短时间的一次性计时器。这可以正常工作并且可靠,但它有点难看,我希望有一个更清洁的解决方案。但看起来 Shown 事件不是它。)
【问题讨论】:
标签: .net winforms events .net-2.0