我有一个简单的测试自定义控件,我已经创建并试图弄清楚为什么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); ;
}
}
}
感谢您的帮助
答案 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());
}
我得到了这个