UserControl加载事件未触发

时间:2010-02-08 09:08:18

标签: c# winforms events

我有WinForms应用程序。 My Form派生类具有UserControl派生类。 我只是将几个控件放入一个UserControl中以简化重用。 Load UserControl事件未被触发。我必须设置一些属性吗?

3 个答案:

答案 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);
    }