Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 句柄单击事件自定义服务器控件_Asp.net_Postback_Custom Server Controls_Buttonclick - Fatal编程技术网

Asp.net 句柄单击事件自定义服务器控件

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进行控制:

    ... 
    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范围内的控件集合中。。希望这有帮助。。