什么是控件的“On_Load”等效表单?

我有一个列表框,我想执行一个方法,当它加载,虽然我不能使用窗体“On_Load”触发器,因为列表框是在一个TabControl。

有没有办法让对象初始化时执行一个方法?

Solutions Collecting From Web of "什么是控件的“On_Load”等效表单?"

正如@SLaks所说,你可以把你的类的构造函数。 但是,如果要准备依赖表单中的其他元素,则可以在表单加载结束时将事件处理程序队列添加到事件处理程序队列中,但在其实际呈现给用户之前添加到事件处理程序队列中。

在窗体的构造函数代码(不是设计器代码)中,添加到加载事件,然后添加您自己的自定义函数

public partial class frmYourForm : Form { public frmYourForm() { Load += YourPreparationHandler; } private void YourPreparationHandler(object sender, EventArgs e) { // Do you code to prepare list, combos, query, bind, whatever } } 

控件的最接近的模拟是HandleCreated事件。 当底层的控制句柄被创建时,这将会触发,这是稍微在父窗口的Loaded事件触发之前。

你可以使用HandleCreated事件吗?

有同样的问题,以前的答案适用于单个案例。

但是,我需要在多数控件中以几种形式在应用程序中执行某些操作。 通过使用接口解决:

 interface IOnLoad { void OnLoad(); } 

并添加到后代控制:

 public partial class MyButton : Button, IOnLoad { void OnLoad() { // call "OnLoadDelegate" } } public partial class MyForm : Form { public void MyForm_Load(...) { foreach(Control eachControl in Controls) { if (eachControl is IOnLoad) { IOnLoad eachOnLoadControl = (IOnLoad)eachControl; eachOnLoadControl.OnLoad(); } } // foreach } } // class 

它更复杂,但它符合我的要求。

你可以把你的代码放在构造函数中。

您通常不需要等待任何初始化。