Asp.net 句柄单击事件自定义服务器控件
我可以通过imagebutton进行控制:Asp.net 句柄单击事件自定义服务器控件,asp.net,postback,custom-server-controls,buttonclick,Asp.net,Postback,Custom Server Controls,Buttonclick,我可以通过imagebutton进行控制: ... ImageButton btn; public MyControl() { btn = new ImageButton(); } protected override void OnInit(EventArgs e) { base.OnInit(e); Page.RegisterRequiresPostBack(this);
...
ImageButton btn;
public MyControl()
{
btn = new ImageButton();
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Page.RegisterRequiresPostBack(this);
}
protected override void CreateChildControls()
{
btn.Height = Height;
btn.Width = Height;
btn.Click += new System.Web.UI.ImageClickEventHandler(RaiseLeftClickEvent);
}
private void RaiseLeftClickEvent(object sender, ImageClickEventArgs e)
{
throw new NotImplementedException();
}
当我单击按钮时,单击事件不触发。我认为您必须在OnInit范围内创建单击事件
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Page.RegisterRequiresPostBack(this);
base.CreateChildControls();
btn.Click += new System.Web.UI.ImageClickEventHandler(RaiseLeftClickEvent);
}
更新:
首先,控件的基类必须是WebControl类
以及OnInit作用域定义按钮的事件:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Page.RegisterRequiresControlState(this);
Controls.Clear();
base.CreateChildControls();
btn.Click += btnImageButton_Click;
Controls.Add(btn);
}
void btnImageButton_Click(object sender, EventArgs e)
{
//Handle Click event..
}
希望这有帮助 我认为关于RaiseLeftClickEvent参数存在一个问题。您确定RaiseLeftClickEvent的定义是正确的吗?此方法是自动生成的。我认为重写CreateChildControls是错误的,而且我认为必须将该控件添加到Init范围内的控件集合中。。希望这有帮助。。