ContentElement.AddHandler 方法

定義

為指定的路由事件新增一個路由事件處理器,並將該處理器加入目前元素的處理器集合中。

多載

名稱 Description
AddHandler(RoutedEvent, Delegate)

為指定的路由事件新增一個路由事件處理器,並將該處理器加入目前元素的處理器集合中。

AddHandler(RoutedEvent, Delegate, Boolean)

為指定的路由事件新增一個路由事件處理器,並將該處理器加入目前元素的處理器集合中。 指定 handledEventsTootrue 對於已被事件路由中其他元素標記為處理的路由事件,呼叫所提供的處理器。

AddHandler(RoutedEvent, Delegate)

為指定的路由事件新增一個路由事件處理器,並將該處理器加入目前元素的處理器集合中。

public:
 virtual void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public void AddHandler(System.Windows.RoutedEvent routedEvent, Delegate handler);
abstract member AddHandler : System.Windows.RoutedEvent * Delegate -> unit
override this.AddHandler : System.Windows.RoutedEvent * Delegate -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate)

參數

routedEvent
RoutedEvent

一個用於處理路由事件的識別碼。

handler
Delegate

這是對處理器實作的參考。

實作

備註

你可以在同一事件中多次新增同一個處理器,而不會觸發例外。 然而,當事件被處理時,處理器實際上會被多次呼叫。 因此,請考慮這種行為可能帶來的副作用,這些副作用應該在你的處理器實作中加以考量。

通常使用此方法來實作自訂路由事件的Microsoft .NET事件存取模式的「新增」存取器。

適用於

AddHandler(RoutedEvent, Delegate, Boolean)

為指定的路由事件新增一個路由事件處理器,並將該處理器加入目前元素的處理器集合中。 指定 handledEventsTootrue 對於已被事件路由中其他元素標記為處理的路由事件,呼叫所提供的處理器。

public:
 void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public void AddHandler(System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
member this.AddHandler : System.Windows.RoutedEvent * Delegate * bool -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)

參數

routedEvent
RoutedEvent

一個用於處理 .routed 事件的識別碼。

handler
Delegate

這是對處理器實作的參考。

handledEventsToo
Boolean

true 註冊處理程序,使其即使路由事件在其事件資料中標記為處理中,也能被呼叫; false 註冊處理程序時,預設條件是若路由事件已被標記為已處理,則不會呼叫該處理程序。

預設值為 false

不要經常要求重新處理路由事件。

範例

以下範例實作了一個在頁面事件中 Initialized 呼叫的處理器,該處理器透過 將定義的處理器附加到頁面 handledEventsTootrue上的指定元素之一。 即使路由上的另一個元素在到達處理元素之前標記共享事件資料為已處理,這個處理器仍會被呼叫。

void PrimeHandledToo(object sender, EventArgs e)
{
    dpanel2.AddHandler(Button.ClickEvent, new RoutedEventHandler(GetHandledToo), true);
}
Private Sub PrimeHandledToo(ByVal sender As Object, ByVal e As EventArgs)
    dpanel2.AddHandler(Button.ClickEvent, New RoutedEventHandler(AddressOf GetHandledToo), True)
End Sub

備註

實際處理低階輸入事件是一項複雜的任務。 許多控制項實作行為,將某事件標記為處理中,並被另一個更直覺的事件取代。 一般來說,控制項只有在有設計意圖時,才會將平台輸入事件標記為已處理。 在某些情況下,這些設計意圖可能不是你處理輸入事件時所需要的。 在這些情境下,註冊處理者handledEventsTootrue才是適當的。 但你不應該經常這樣做。 即使處理過,仍要在所有事件中呼叫處理器,會讓你的應用程式事件處理邏輯變得複雜。 如果處理器邏輯很複雜,效能可能會下降。 你應該將對已處理事件附加處理程式保留給你在開發過程中發現某些控制項正在處理你仍想用應用程式邏輯處理的事件時使用。

另一種避免某些事件控制組合類別處理行為的技巧是使用該事件的預覽替代方案。 例如,如果 MouseLeftButtonDown 被 class handling 標記為 handled,你可能可以為 新增 handler PreviewMouseLeftButtonDown

你可以在同一事件中多次新增同一個處理器,而不會觸發例外。 然而,當事件被處理時,處理器實際上會被多次呼叫。 因此,請考慮這種行為可能帶來的副作用,這些副作用應該在你的處理器實作中加以考量。

通常使用此方法來實作自訂路由事件的Microsoft .NET事件存取模式的「新增」存取器。

適用於