Обработчик событий Tablecell - PullRequest
0 голосов
/ 24 марта 2011

Я создаю небольшую игру из 4-х подряд в C #.

Моей первой мыслью было использование существующего элемента управления Table, присвоение ему 6 строк и 5 столбцов и предоставление всем объектам tablecellуникальный идентификатор.Затем я продолжил бы добавлять обработчики событий в каждую из ячеек в первой строке, которую я определяю сам, чтобы, когда пользователь нажимает на одну из них, мой код проверял ячейки под ячейкой, на которую щелкали, и изменял цвет фонаячейка, представляющая кусок, который вы вставили в реальную жизнь.

Мой вопрос заключается в том, как добавить обработчик событий к объекту tablecell, поскольку единственными предопределенными событиями являются DataBinding, Init, Load, PreRender и Unload, и, поскольку они не соответствуют моим потребностям, мне нужно создать свойсвоя.Есть идеи?

1 Ответ

0 голосов
/ 24 марта 2011

Обычная ячейка таблицы не имеет события 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.

...