2010-01-21 31 views
2

我正在創建一個自定義控件。比方說,我正在重塑車輪並創建一個從UserControl類派生的自定義按鈕控件(例如)何時啓動自定義控件事件?

嗯,它當然有一個Click事件處理程序。現在我的問題是,我什麼時候調用這個事件處理程序?我知道它發生在Pages OnLoad和OnLoadComplete之間,但我不太確定我可以連接哪些事件,以便在其他控件事件的同時引發事件Click

你打算什麼時候調用自定義控件事件?

回答

2

一般而言,只要您知道潛在事件已發生,您應立即舉報該事件。

例如,ASP.NET Button控件如何知道它被用戶點擊?它實現了IPostBackEventHandler和RaisePostBackEvent()方法。如果有與控件關聯的回發事件數據,該方法將被調用。我相信這個關聯是由它所呈現的「名稱」屬性決定的。在RaisePostBackEvent()中,它引發Click事件。

您需要回答的問題是:您的控件如何知道它應該提升其事件?一旦你發現我們的休息很簡單。

如果您的控件與現有的ASP.NET控件有相似之處,我會推薦stepping through the ASP.NET source code並查看這些控件的工作方式。

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)); 
} 
相關問題