Когда запускать пользовательское событие управления?

2

Я создаю настраиваемый элемент управления. Скажем, я изобретаю колесо и создаю пользовательский элемент управления Button, который происходит из класса UserControl (только для примера)

Ну, конечно, он имеет обработчик события Click. Теперь моя проблема в том, когда я вызываю этот обработчик событий? Я знаю, что это происходит где-то между Pages OnLoad и OnLoadComplete, но я не совсем уверен, какое событие я могу подключить, чтобы событие Click было поднято одновременно с другими событиями управления.

Когда вы предполагаете вызывать пользовательские события управления?

Теги:
events
page-lifecycle

2 ответа

2
Лучший ответ

В общем, вы должны поднять событие, как только узнаете, что произошло основное событие.

Например, как элемент управления ASP.NET Button знает, что он был нажат на использование? Он реализует IPostBackEventHandler и метод RaisePostBackEvent(). Этот метод будет вызван, если есть данные события обратной связи, связанные с элементом управления. Я считаю, что ассоциация определяется атрибутом "name", который он отображает. В RaisePostBackEvent() он вызывает событие Click.

Вопрос, на который вам нужно ответить: как ваш контроль знает, что он должен поднять свое событие? Как только вы обнаружите, что все остальное легко.

Если ваш элемент управления имеет сходство с существующими элементами управления ASP.NET, я бы рекомендовал выполнить исходный код ASP.NET и посмотреть, как эти элементы управления работа.

1

Если вы реализуете IPostbackEventHandler, вы можете сделать что-то вроде этого, взятое из декомпиляции System.Web.Ui.WebControls.Button

protected virtual void RaisePostBackEvent(string eventArgument)
{
    base.ValidateEvent(this.UniqueID, eventArgument);
    if (this.CausesValidation)
    {
        this.Page.Validate(this.ValidationGroup);
    }
    this.OnClick(EventArgs.Empty);
    this.OnCommand(new CommandEventArgs(this.CommandName, this.CommandArgument));
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню