在其他自定义控件中加载WebControl:从不触发Load方法

时间:2012-03-23 19:26:24

标签: c# asp.net custom-controls web-controls

我有一个继承自 WebControl 的简单类,如下所示:

public class Instrument : WebControl
{
    private SpecialItem myItem = new SpecialItem("ABC");

    protected override void Render(HtmlTextWriter output)
    {
       output.Write("<div>");
       myItem.RenderControl(output);
       output.Write("</div>");
    }
}

将控件添加到网页后,会显示 SpecialItem ,但其内部的“Load”方法永远不会被触发,这会使其无法使用。如果我自己使用SpecialItem控件,那么它按预期工作。如何从SpecialItem控件中执行load方法?

1 个答案:

答案 0 :(得分:2)

myItem添加到自定义控件的Controls集合中。您通常通过重写方法CreateChildControls来执行此操作(以及实例化子控件):

protected override void CreateChildControls()
{
    myItem = new SpecialItem("ABC");
    Controls.Add(myItem);
}