Когда запускать пользовательское событие управления? - PullRequest
2 голосов
/ 22 января 2010

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

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

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

Ответы [ 2 ]

2 голосов
/ 22 января 2010

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

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

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

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

1 голос
/ 22 января 2010

Если вы реализуете 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));
}
...