Winform - 哪个是用户控件中最后触发的事件?

7
当应用程序/控件加载时,哪个是用户控件最后触发的事件?是Load事件吗?

最后触发的事件是什么?在首次出现时还是在关闭时?请具体说明。 - Jeff Yates
2个回答

9

这实际上取决于你所谈论的是在生命周期的哪个阶段。鉴于您猜测的负载,我们在创建/加载期间进行交流。以下列表显示了我为测试设置的简单UserControl中触发的一些事件的顺序(连接了许多事件侦听器并将事件名称打印到控制台):

HandleCreated
Load
Layout
VisibleChanged
Paint

请注意,布局(Layout)、可见性更改(VisibleChanged)和绘制(Paint)并没有严格地与控件创建有任何关系;布局和特别是绘制可能会在控件的生命周期中的许多时刻被触发。同样,当可见性属性的值发生更改时,也会触发 VisibleChanged 事件。请注意保留 HTML 标记。

1
+1 - 你比我快了。我得到了相同的结果- Paint 是最后的。还要注意,CreateControl 发生在 HandleCreated 和 Load 之间,而 PaintBackground 发生在 Paint 之前。 - Jon B
@Jon B:没有PaintBackground事件,但有受保护的OnPaintBackground方法(看起来非常像标准的事件触发方法,但不会触发任何事件)。无论哪种方式,CreateControl和OnPaintBackground只能在用户控件内部使用,而不能从外部代码(如承载控件的窗体)中使用。 - Fredrik Mörk
@Jon B:忘了提一下,那两种方法还是很好的! :) - Fredrik Mörk

0
Winforms控件与ASP.NET Webforms控件不同,它们没有相同的生命周期。UI事件是在用户执行相关操作时发生的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接