在Windows窗体中加载类似事件的文件框,复选框等任何控件?

时间:2012-11-05 13:37:36

标签: c# .net winforms events

在Windows窗体中,当UserControl或Form第一次显示时,将触发Load事件。

http://msdn.microsoft.com/en-us/library/system.windows.forms.usercontrol.load.aspx

Checkbox,TextBox,Label等控件是否有此类事件?

1 个答案:

答案 0 :(得分:5)

没有。您可以使用HandleCreated事件,在创建控件的本机窗口时触发它。在类构造函数运行后,您可以依赖的第一个事件。当父对象将控件添加到其Controls集合并且控件变为可见时,它将被触发。

请注意,此事件可以多次触发。当重新分配某些属性时,可以重新创建控件,这种类型需要使用新样式标志调用本机CreateWindowEx()函数。因此,你至少需要随身携带一个可以追踪这一点的bool旗帜。

另请注意,在创建本机窗口之后设置控件的属性效率非常低。所有Winforms控件都设计为允许在创建本机窗口之前设置属性。无论你生成什么代码几乎肯定应该使用类构造函数。任何一个派生控件本身。或者在父代码中,就像InitializeComponent()对表单或用户控件一样。

现有的Load事件也是如此。由于Load事件非常重要的VB6遗留,它往往被过度使用。但是在Winforms中,只需要依赖于控件或表单的最终位置和大小的代码。由于形式缩放,这可能与设计属性不同。任何其他代码都属于构造函数。