2008年11月4日 星期二

Raise UserControl event to Main Page


[詳細連結←跨加啦]

當寫好一個 User Control 後,接著就會放到一個 aspx 頁面讓他有表現的機會。
可是,如果我們自訂的 UserControl 裡有Button 控制項,也希望在 aspx 頁面
能夠可以攔到使用者壓下 UserControl 裡的 Button 被觸發的事件時,該怎麼做ㄋ?

以下介紹三種方法:

第一種,正規作法:

參考了 Chirag Darji 部落格文章。
他在介紹 delegate 時,順便也把我的問題給解決了。真是舉手之勞啊!


第二種,特殊作法:
參考了 Mr. Puma Chih Cheng Kuo 部落格文章。
他同樣也是使用 delegate 來解決,但是他提到了自定事件參數的概念。以往我們在事件
參數傳遞,預設都是使用 EventArgs e
若想要自定事件參數時,則要事先去定義自己的EventArgs,Puma 則自己定義了 MyEventArgs。


第三種,懶人作法:
參考了 Thea 部落格文章。
真是酷斃了!如果你只是單純的想要在aspx頁面攔到 UserControl 裡的事件,用這個就對了。


心得,不管你用哪一種方法,在 aspx 頁面一定要去將 UserControl 裡的事件加入你的 EventHandler。
而且有個地方要注意,你不能將註冊 EventHandler 的程式寫在 !IsPostBack ,因為在每一次頁面
PostBack 時,都必須重新註冊一次。

沒有留言:

張貼留言