路由事件與傳統事件的分析

2022-06-11 21:18:13 字數 1182 閱讀 2542

1:winform

例如:button,它的onclick方法中封裝了觸發click事件(或引發click事件)的語句( 如:if(this.click!=null)  // 觸發button的click事件)   ;   分析微軟是這樣處理的:在需要的情況下,就呼叫onclick方法,從而觸發button的click事件。

2:wpf

例如:button,它的onclick方法中封裝了觸發button.clickevent事件(或引發button.clickevent事件)的語句( 如:routeeventargs newevent = new routeeventargs(button.clickevent,this) ; this.raiseevent(newevent);}   // 觸發button.clickevent事件)   ;   分析微軟是這樣處理的:在需要的情況下,就呼叫onclick方法,從而觸發button.clickevent事件(這是乙個路由事件);

對於clr事件,它本身屬於例項的,例如在窗體布局中放置乙個button按鈕(button1),在前台xaml中,click="button1_click"  ,  這個xaml**實際是呼叫了clr事件包裝器的add  訪問器      ;    若在後台**實現button按鈕安裝button.clickevent事件偵聽器,則需要在button1按鈕所在的窗體中呼叫 this.button1.addhandler(button.clickevent,new routedeventhandler(this.button1_click))  //button1安裝button.clickevent事件偵聽器  。 所以總結出:在安裝button.clickevent事件偵聽器這件事上,button.clickevent事件對button按鈕和其它uielement控制項  是   同等對待   的。

3:那是不是所有的普通事件都需要改為路由事件呢?  答案:不完全正確是的,路由事件 只能 用在uielement中(因為addhandler和removehandler方法來自於uielement),普通類 只能  定義  「普通事件」   。

4:那是不是所有的普通屬性都需要改為依賴屬性呢?  答案:不是的, 依賴屬性  只能  定義在   visual及其子類  中(因為依賴屬性的宿主必須是dependencyobject —— uielement:visual:dependencyobject),普通的資料實體類  只能  定義  「普通屬性」 。

路由事件詳解

路由事件 路由事件是指一些在試圖樹中按照它們的路由規則可上拋或下拋的事件。這種路由事件經常有 管道 冒泡 直接 可以將事件處理器直接掛接在新增事件的元素上,也可以通過附加屬性語法 button.click button click 掛接在他上面或者下面的其他元素上。路由事件一般是成對出現的。第乙個是...

WPF路由事件

c 高階程式設計第八版閱讀筆記 sender 事件的傳送者 其呼叫的事件處理器 source事件源 激發 raise 的事件 不使用路由事件的話 sender跟source是同一物件 originalsource 也是事件源 與source不同的地方在於他是原始事件源,真正的激發事件的源頭 事件的s...

WPF 路由事件

路由事件有三種方式。direct event 直接路由事件。自身元素,不傳遞。bubbling event 冒泡路由事件。從子元素到父元素傳遞。tunneling event 隧道路由事件。從父元素到子元素傳遞。1.設定handled true的時候,不管是冒泡還是隧道事件,它還是會繼續傳播的,只是...