我正在创建一个自定义控件。假设我正在重新发明轮子并创建一个派生自UserControl类的自定义Button控件(仅用于示例)
嗯,它当然有一个Click
事件处理程序。现在我的问题是,我什么时候调用这个事件处理程序?我知道它发生在Pages OnLoad和OnLoadComplete之间的某个时间,但是我不太确定我可以连接到什么事件,以便Click
事件与其他控制事件同时引发。
您打算何时调用自定义控件事件?
答案 0 :(得分:2)
一般情况下,您应该在知道基础事件发生后立即举起事件。
例如,ASP.NET Button控件如何知道它被用户单击了?它实现了IPostBackEventHandler和RaisePostBackEvent()方法。如果存在与控件关联的回发事件数据,则将调用该方法。我相信该关联是由它呈现的“name”属性决定的。在RaisePostBackEvent()中,它然后引发Click事件。
你需要回答的问题是:你的控制如何知道它应该提升它的事件?一旦你发现我们的其余部分很容易。
如果您的控件与现有的ASP.NET控件有相似之处,我建议stepping through the ASP.NET source code并查看这些控件的工作原理。
答案 1 :(得分: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));
}