2013-05-15 44 views
0

我有控制用的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(); 
    } 

当我点击没有按钮的Click事件触发。

回答

2

我认为你必须创建的OnInit范围click事件..

protected override void OnInit(EventArgs e) 
{ 
    base.OnInit(e); 
    Page.RegisterRequiresPostBack(this); 
    base.CreateChildControls(); 
    btn.Click += new System.Web.UI.ImageClickEventHandler(RaiseLeftClickEvent); 
} 

UPDATE

首先,基类的控制必须是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.. 
} 

希望这有助于..

+0

这并不帮助,但想法正确 –

+0

我认为有大约RaiseLeftClickEvent参数的问题。你确定RaiseLeftClickEvent的定义是正确的吗? –

+0

这种方法是自动生成的。 –