自定义控件事件没有触发

问题描述:

我有一个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的和它的事件(这是上面包括在内)的呈现的代码,以便除去所有的其他因素。

任何想法为什么事件没有解雇?我错过了什么吗?

这基本上是因为控件在页面生命周期中创建得太晚。根据MSDN Lifecycle document,您需要在PreInit中创建任何动态控件,而不是在CreateChildControls中创建。如果您正在开发自定义控件,则需要在Init重写中创建所有动态控件,并在其中挂接事件。

希望这会有所帮助! :)