本文實例講述了ASP.NET中實現定制自己的委托和事件參數類的方法,對于學習ASP.NET有很好的參考借鑒價值。具體方法如下:
一般在實際開發中,對于事件不需要傳遞數據信息時,像上面的KingTextBox控件的事件,在引發事件時傳遞的參數為EventArgs.Empty,如下所示:
OnTextChanged(EventArgs.Empty);
這是因為控件KingTextBox的TextChanged事件比較簡單,這里不需要參數對象傳遞數據。但像一些復雜的控件比如GridView的按鈕命令事件,必須得有參數命令表示單擊了哪個按鈕;翻頁事件,需要EventArgs參數對象把當前頁信息傳遞到頁面后臺代碼的事件體的第二個參數中,然后開發人員根據此頁參數從數據庫取得對應頁的數據;還有像ItemDataBound事件,也需要把當前Row信息和索引等數據作為EventArgs參數傳遞到事件實例中。
當遇到以上這些情況,我們就需要定義自己的事件參數類和委托,而不使用默認的System.EventArgs類。下面就以Grid控件的翻頁功能說明一下定義事件參數類和委托的方法,請看以下代碼:
/// <summary>/// /// </summary>public delegate void GridPageChangedEventHandler(object source, GridPage ChangedEventArgs e);public class GridPageChangedEventArgs : System.EventArgs{ public GridPageChangedEventArgs() { } private int intCurrentPageIndex; public new int CurrentPageIndex { get { return intCurrentPageIndex; } set { intCurrentPageIndex = value; } } private int intPageCount; public new int PageCount { get { return intPageCount; } set { intPageCount = value; } } private int intPageSize; public new int PageSize { get { return intPageSize; } set { intPageSize = value; } }}以上代碼定義了一個存儲翻頁相關信息的參數類,此參數類派生于System.EventArgs類,在這里系統不強制要求一定繼承于該類,不繼承它也是可以的,但繼承于該類有一點好處。先看一下System.EventArgs基類的代碼:
/// <summary>/// /// </summary>public class EventArgs{ //表示沒有事件數據的事件 public static readonly EventArgs Empty; //初始化 System.EventArgs 類的新實例 public EventArgs();}EventArgs中除了一個構造方法外,還有一個它本身類型的Empty屬性,從這里可以知道前面在調用時通過OnTextChanged(EventArgs.Empty);格式,把EventArgs.Empty作為空參數傳入事件引發方法時的用途了。這里要說明的是如果我們的GridPageChangedEventArgs類是從EventArgs繼承而來,則不但可以傳遞GridPageChangedEventArgs類對象,而且可以使用GridPageChangedEventArgs.Empty的形式傳遞空參數對象。
在GridPageChangedEventArgs方法體中定義了一些屬性;分別表示當前頁(CurrentPageIndex)、頁總數(PageCount)和頁尺寸(PageSize)。這些都是我們自定義的頁信息數據。
新聞熱點
疑難解答
圖片精選