1

我有一个带有 LinkBut​​ton 的自定义控件。当我单击 LinkBut​​ton 时,它的单击事件不会触发。

[ToolboxData("<{0}:View runat=server></{0}:View>")]
public class View : Control
{
    private LinkButton lbNextPage;
    protected override void CreateChildControls()
    {
        lbNextPage = new LinkButton() { ID = "lbNextPage", Text = "Next Page" };

        lbNextPage.Click += delegate(object sender, EventArgs e)
        {
            Page.Response.Write("Event Fires!");
        };

        Controls.Add(lbNextPage);
    }
}

我只提取了负责渲染 LinkBut​​ton 及其事件的代码(即上面包含的内容),以消除所有其他因素。

知道为什么事件没有触发吗?我错过了什么吗?

4

1 回答 1

1

本质上是因为控件在页面生命周期中创建得太晚。根据MSDN 生命周期文档,您需要在 PreInit 而不是 CreateChildControls 中创建任何动态控件。如果您按原样开发自定义控件,则需要在 Init 覆盖中创建所有动态控件,并将事件连接在那里。

希望这可以帮助!:)

于 2009-01-22T23:27:29.433 回答