尝试触发ASP.NET自定义控件按钮事件

时间:2011-04-09 13:21:48

标签: asp.net events controls

我有一个简单的测试自定义控件,我已经创建并试图弄清楚为什么click事件不会触发。下面是代码。我只需在

的测试页面上创建一个控件实例

使用该控件的.aspx页面的Page_Load         protected void Page_Load(object sender,EventArgs e)         {             Page.Form.Controls.Add(new TestControl());         }

该页面会回发,但它不会在用户控件中选择click事件。请解释我做错了什么或者用特定模式等方法来解决这个问题。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI;

namespace WorldOfTest
{

公共类TestControl:WebControl     {         私人按钮btn;

    protected override void OnInit(EventArgs e)
    {            
        base.OnInit(e);
    }

    protected override void EnsureChildControls()
    {
        btn = new Button();           
        this.Controls.Add(btn); 
        base.EnsureChildControls();
    }

    protected override void CreateChildControls()
    {

        btn.Click += new EventHandler(btn_Click);  
        btn.Text = "test button";                         
        base.CreateChildControls();
    }

    void btn_Click(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }

    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        btn.RenderControl(writer); ;
    }

}
}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您必须将btn添加到Controls这样的集合

    protected override void EnsureChildControls()
    {
        this.btn = new Button();   
        Controls.Add(btn);         
        base.EnsureChildControls();
    }

修改

一旦我将按钮添加到控件的集合中,似乎对我工作正常。

我试过这个

    protected void Page_Load(object sender, EventArgs e)
    {
        Page.Form.Controls.Add(new Tester());
    }

我得到了这个 enter image description here