Я создаю настраиваемый элемент управления. Скажем, я изобретаю колесо и создаю пользовательский элемент управления Button, который происходит из класса UserControl (только для примера)
Ну, конечно, он имеет обработчик события Click
. Теперь моя проблема в том, когда я вызываю этот обработчик событий? Я знаю, что это происходит где-то между Pages OnLoad и OnLoadComplete, но я не совсем уверен, какое событие я могу подключить, чтобы событие Click
было поднято одновременно с другими событиями управления.
Когда вы предполагаете вызывать пользовательские события управления?
В общем, вы должны поднять событие, как только узнаете, что произошло основное событие.
Например, как элемент управления ASP.NET Button знает, что он был нажат на использование? Он реализует IPostBackEventHandler и метод RaisePostBackEvent(). Этот метод будет вызван, если есть данные события обратной связи, связанные с элементом управления. Я считаю, что ассоциация определяется атрибутом "name", который он отображает. В RaisePostBackEvent() он вызывает событие Click.
Вопрос, на который вам нужно ответить: как ваш контроль знает, что он должен поднять свое событие? Как только вы обнаружите, что все остальное легко.
Если ваш элемент управления имеет сходство с существующими элементами управления ASP.NET, я бы рекомендовал выполнить исходный код ASP.NET и посмотреть, как эти элементы управления работа.
Если вы реализуете 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));
}