2011-03-24 83 views
0

我在C#中創建了一個連續4個小遊戲。Tablecell eventhandler

我的第一個想法是使用現有的Table控件,給它6行和5列,並給所有tablecell對象一個唯一的id。然後,我會繼續添加事件處理程序到我定義自己的第一行中的每個單元格,以便當用戶單擊其中一個單元格時,我的代碼將檢查單元格下方的單元格,並更改背景顏色表示您在現實生活中插入的作品的單元格。

我的問題是,如何將事件處理程序添加到tablecell對象,因爲唯一預定義的事件是DataBinding,Init,Load,PreRender和Unload,並且由於它們不符合我的需要,所以我需要創建自己的事件。有任何想法嗎?

回答

0

普通表單元格沒有OnClick事件。最簡單的替代方法是在表格單元格內放置<asp:LinkButton>,或<asp:ImageButton>。當然,您也可以自己創建一個ClickableTableCell控件。這是一個非常簡單的實現:

public class ClickableTableCell : TableCell, IPostBackEventHandler 
{ 
    public event EventHandler Click; 

    public override void RenderBeginTag(HtmlTextWriter writer) 
    { 
     Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(this, null)); 
     base.RenderBeginTag(writer); 
    } 

    public void RaisePostBackEvent(string eventArgument) 
    { 
     OnClick(new EventArgs()); 
    } 

    protected void OnClick(EventArgs e) 
    { 
     if (Click != null) 
      Click(this, e); 
    } 
} 

如果你想使用這個控件,你必須register the control first,無論是在aspx頁面的頂部,或在web.config中。