我有一个WinForms应用。我的Form派生类有一个UserControl派生类。我简单地将几个控件放入一个UserControl中,以便简化重用。但是UserControl
的Load
事件没有触发。我需要设置一些属性吗?
OnLoad 方法还允许派生类处理事件而无需附加委托。 这是在派生类中处理事件的首选技术。
protected override void OnLoad(EventArgs e)
{
//Your code to run on load goes here
// Call the base class OnLoad to ensure any delegate event handlers are still callled
base.OnLoad(e);
}
对于UserControl的事件触发,您无需设置任何特殊属性。有两种方式可以订阅事件。在属性(属性网格)中选择事件列表...双击“Load”属性。所有必要的代码都将被放置,并且光标将在适当的方法处等待您。
第二种方法是这样订阅事件:
public MyMainForm( )
{
InitializeComponents();
myUserControl.Load += new System.EventHandler(myUserControl_Load);
}
void myUserControl_Load(object sender, EventArgs e)
{
MessageBox.Show(((UserControl)sender).Name + " is loaded.");
}
Load事件停止触发的一个原因是您的控件有一个父控件执行了以下操作:
protected override void OnLoad(EventArgs e)
{
//do something
}
你总是需要确保做到这一点
protected override void OnLoad(EventArgs e)
{
//do something
base.OnLoad(e);
}