UIElement.AddHandler 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
為指定的路由事件新增路由事件處理程式,將處理程式新增至目前元素上的處理程式集合。
多載
AddHandler(RoutedEvent, Delegate) |
為指定的路由事件新增路由事件處理程式,將處理程式新增至目前元素上的處理程式集合。 |
AddHandler(RoutedEvent, Delegate, Boolean) |
為指定的路由事件新增路由事件處理程式,將處理程式新增至目前元素上的處理程式集合。 將 |
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
。
請勿定期要求重新處理路由事件。
範例
下列範例會使用 handledEventsToo
true
,在頁面上的 Initialized 事件上實作叫用的處理程式,將已定義的處理程式附加至頁面上的其中一個具名元素。 即使路由上的另一個元素在到達路由中的處理元素之前,將共用事件數據標示為已處理,也會叫用此處理程式。
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
備註
以實際方式處理低階輸入事件是一項複雜的工作。 許多控件會實作將特定事件標示為已處理的行為,並取代為另一個更直覺的事件。 一般而言,如果有一些設計意圖這樣做,控件只會將平臺輸入事件標示為已處理。 在某些情況下,這些設計意圖可能不是您特定處理輸入事件所需的目的。 在註冊處理程式時,true
適合使用 handledEventsToo
註冊處理程式。 但您不應該經常這樣做。 叫用處理程式以回應所有事件,即使已處理也會使您自己的應用程式事件處理邏輯複雜化。 如果處理程式邏輯很大,您可能會看到效能降低。 您應該針對已經在開發程式期間探索到的某些控制項處理您仍想要處理的應用程式邏輯的事件,保留附加處理程式的附加處理程式。
另一種避免特定事件控件組合類別處理行為的技術,是使用該事件的預覽替代方案。 例如,如果類別處理標示 MouseLeftButtonDown,您可以改為新增 PreviewMouseLeftButtonDown 的處理程式。
您可以多次為相同的事件新增相同的處理程式,而不會引發例外狀況。 不過,處理事件時,處理程序實際上會叫用多次。 因此,請考慮此行為在處理程序實作中應該考慮的副作用。
您通常會使用這個方法,為自定義路由事件的Microsoft .NET 事件存取模式提供“add” 存取子的實作。