我正在創建一個自定義控件。比方說,我正在重塑車輪並創建一個從UserControl類派生的自定義按鈕控件(例如)何時啓動自定義控件事件?
嗯,它當然有一個Click
事件處理程序。現在我的問題是,我什麼時候調用這個事件處理程序?我知道它發生在Pages OnLoad和OnLoadComplete之間,但我不太確定我可以連接哪些事件,以便在其他控件事件的同時引發事件Click
。
你打算什麼時候調用自定義控件事件?
我正在創建一個自定義控件。比方說,我正在重塑車輪並創建一個從UserControl類派生的自定義按鈕控件(例如)何時啓動自定義控件事件?
嗯,它當然有一個Click
事件處理程序。現在我的問題是,我什麼時候調用這個事件處理程序?我知道它發生在Pages OnLoad和OnLoadComplete之間,但我不太確定我可以連接哪些事件,以便在其他控件事件的同時引發事件Click
。
你打算什麼時候調用自定義控件事件?
一般而言,只要您知道潛在事件已發生,您應立即舉報該事件。
例如,ASP.NET Button控件如何知道它被用戶點擊?它實現了IPostBackEventHandler和RaisePostBackEvent()方法。如果有與控件關聯的回發事件數據,該方法將被調用。我相信這個關聯是由它所呈現的「名稱」屬性決定的。在RaisePostBackEvent()中,它引發Click事件。
您需要回答的問題是:您的控件如何知道它應該提升其事件?一旦你發現我們的休息很簡單。
如果您的控件與現有的ASP.NET控件有相似之處,我會推薦stepping through the ASP.NET source code並查看這些控件的工作方式。
如果實現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));
}