UIElement.AddHandler 方法

定義

加入所指定路由事件的路由事件處理常式,會將此處理常式加入目前項目的處理常式集合中。

多載

AddHandler(RoutedEvent, Delegate)

加入所指定路由事件的路由事件處理常式,會將此處理常式加入目前項目的處理常式集合中。

AddHandler(RoutedEvent, Delegate, Boolean)

加入所指定路由事件的路由事件處理常式,會將此處理常式加入目前項目的處理常式集合中。 將 handledEventsToo 指定為 true,為已標示為由事件路由上另一個項目處理的事件叫用提供的處理常式。

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 事件存取模式提供 「add」 存取子的實作。

適用於

AddHandler(RoutedEvent, Delegate, Boolean)

加入所指定路由事件的路由事件處理常式,會將此處理常式加入目前項目的處理常式集合中。 將 handledEventsToo 指定為 true,為已標示為由事件路由上另一個項目處理的事件叫用提供的處理常式。

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

要處理的路由事件識別項。

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 已由類別處理標示為已處理,則您可以改為新增 的 PreviewMouseLeftButtonDown 處理常式。

您可以多次為相同的事件新增相同的處理常式,而不會引發例外狀況。 不過,處理事件時,實際上會多次叫用處理程式。 因此,請考慮此行為在處理常式實作中應該考慮的副作用。

您通常會使用這個方法,為自訂路由事件的 Microsoft .NET 事件存取模式提供 「add」 存取子的實作。

適用於