我有WinForms应用程序。 My Form派生类具有UserControl派生类。
我只是将几个控件放入一个UserControl中以简化重用。 Load
UserControl
事件未被触发。我必须设置一些属性吗?
答案 0 :(得分:10)
尝试覆盖UserControl中的OnLoad() method。来自MSDN:
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);
}
答案 1 :(得分:3)
您不需要为要触发的UserControl事件设置任何特殊属性。您有2种方式之一订阅该活动。在Properties(属性网格)中,选择事件列表...双击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.");
}
答案 2 :(得分:1)
Load事件停止触发的一个原因是当你的控件的父级执行类似这样的操作时
protected override void OnLoad(EventArgs e)
{
//do something
}
你总是需要确保这样做
protected override void OnLoad(EventArgs e)
{
//do something
base.OnLoad(e);
}