我正在用C#创建一个4连续的小游戏。
我的第一个想法是使用现有的Table控件,给它6行5列,并为所有tablecell对象提供唯一的id。然后我会继续向我自己定义的第一行中的每个单元格添加事件处理程序,这样当用户单击其中一个单元格时,我的代码将检查单击的单元格下方的单元格并更改背景颜色表示您在现实生活中插入的部分的单元格。
我的问题是,我如何向tablecell对象添加一个eventhandler,因为唯一预定义的事件是DataBinding,Init,Load,PreRender和Unload,并且由于它们不符合我的需要,我需要创建自己的。有什么想法吗?
答案 0 :(得分:0)
普通表格单元格没有OnClick事件。最简单的替代方法是在表格单元格中放置<asp:LinkButton>
,<asp:Button>
或<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);
}
}
如果要使用此控件,则必须在aspx页面之上或web.config中register the control first。