Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows窗体中为任何控件(如文本框、复选框)加载类似事件?_C#_.net_Winforms_Events - Fatal编程技术网

C# 在Windows窗体中为任何控件(如文本框、复选框)加载类似事件?

C# 在Windows窗体中为任何控件(如文本框、复选框)加载类似事件?,c#,.net,winforms,events,C#,.net,Winforms,Events,在Windows窗体中,当用户控件或窗体第一次可见时,将触发加载事件 复选框、文本框、标签等控件是否存在此类事件?否。您可以使用HandleCreated事件,它在创建控件的本机窗口时触发。在类构造函数运行之后,可以依赖的第一个事件。当父控件将控件添加到其控件集合中且控件变为可见时,会触发该控件 但是,请注意,此事件可能会引发多次。当某些属性被重新分配时,可以重新创建控件,这种类型需要使用新的样式标志调用本机CreateWindowEx()函数。所以你至少需要随身携带一个bool标志来跟踪这一

在Windows窗体中,当用户控件或窗体第一次可见时,将触发加载事件


复选框、文本框、标签等控件是否存在此类事件?

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

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

还要注意,在创建本机窗口后设置控件的属性效率非常低。所有Winforms控件的设计都允许在创建本机窗口之前设置属性。无论您生成的代码是什么,几乎肯定都应该使用类构造函数。派生控件本身的任意一个。或者在父控件的代码中,类似于InitializeComponent()对窗体或用户控件所做的操作


对于现有加载事件也是如此。由于VB6遗留版本中的加载事件非常重要,因此它往往被过度使用。但是,在Winforms中,它仅适用于依赖于控件或窗体的最终位置和大小的代码。由于形状缩放,可能与设计特性不同。任何其他代码都属于构造函数。

MSDN是你的朋友(有时):不,根据我从MSDN文档中看到的情况。你到底想达到什么目的?有人可能知道如何解决正在使用XML创建的itUI。我需要通过事件和订阅设置控件可见性,这些事件和订阅也是用XML定义的。例如,为了处理ComboBox的SelectedIndexChanged事件,在XML中为其定义了一个事件发布者,可以在XML中定义其他控件,这些控件将订阅此XML。我需要预先隐藏一些控件,如果它们定义了特定的订阅,我需要在首次加载控件时触发此订阅代码,因此我将使用此类事件触发订阅代码。所以基本上我需要在控件加载时触发一些代码