2013-05-15 52 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

這種方法是自動生成的。 –