UIElement.AddHandler UIElement.AddHandler UIElement.AddHandler Method

定義

指定したルーティング イベントのルーティング イベント ハンドラーを追加します。このハンドラーは、現在の要素のハンドラー コレクションに追加されます。Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

オーバーロード

AddHandler(RoutedEvent, Delegate) AddHandler(RoutedEvent, Delegate) AddHandler(RoutedEvent, Delegate)

指定したルーティング イベントのルーティング イベント ハンドラーを追加します。このハンドラーは、現在の要素のハンドラー コレクションに追加されます。Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

AddHandler(RoutedEvent, Delegate, Boolean) AddHandler(RoutedEvent, Delegate, Boolean) AddHandler(RoutedEvent, Delegate, Boolean)

指定したルーティング イベントのルーティング イベント ハンドラーを追加します。このハンドラーは、現在の要素のハンドラー コレクションに追加されます。Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. イベント ルート上の別の要素により既にハンドル済みとしてマークされているルーティング イベントに対し、指定したハンドラーが呼び出されるようにするには、handledEventsTootrue に指定します。Specify handledEventsToo as true to have the provided handler be invoked for routed event that had already been marked as handled by another element along the event route.

AddHandler(RoutedEvent, Delegate) AddHandler(RoutedEvent, Delegate) AddHandler(RoutedEvent, Delegate)

指定したルーティング イベントのルーティング イベント ハンドラーを追加します。このハンドラーは、現在の要素のハンドラー コレクションに追加されます。Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

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

パラメーター

routedEvent
RoutedEvent RoutedEvent RoutedEvent

処理されるルーティング イベントの識別子。An identifier for the routed event to be handled.

handler
Delegate Delegate Delegate

ハンドラーの実装に対する参照。A reference to the handler implementation.

実装

注釈

例外を発生させずは、同じイベントに対して同じハンドラーを複数回追加できます。You can add the same handler for the same event multiple times without raising an exception. ただし、ハンドラーには、イベントを処理するときに複数回が実際に呼び出されます。However, the handler is actually invoked multiple times when the event is handled. そのため、この動作では次の方法でハンドラーの実装で考慮する必要があります副作用がある可能性がありますを検討してください。Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

通常の"add"アクセサーの実装を提供するこのメソッドを使用する、Microsoft .NETMicrosoft .NETカスタム ルーティング イベントのイベントへのアクセス パターン。You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NETMicrosoft .NET event access pattern of a custom routed event.

AddHandler(RoutedEvent, Delegate, Boolean) AddHandler(RoutedEvent, Delegate, Boolean) AddHandler(RoutedEvent, Delegate, Boolean)

指定したルーティング イベントのルーティング イベント ハンドラーを追加します。このハンドラーは、現在の要素のハンドラー コレクションに追加されます。Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. イベント ルート上の別の要素により既にハンドル済みとしてマークされているルーティング イベントに対し、指定したハンドラーが呼び出されるようにするには、handledEventsTootrue に指定します。Specify handledEventsToo as true to have the provided handler be invoked for routed event that had already been marked as handled by another element along the event route.

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

パラメーター

routedEvent
RoutedEvent RoutedEvent RoutedEvent

処理されるルーティング イベントの識別子。An identifier for the routed event to be handled.

handler
Delegate Delegate Delegate

ハンドラーの実装に対する参照。A reference to the handler implementation.

handledEventsToo
Boolean Boolean Boolean

イベント データ内でルーティング イベントが処理済みとしてマークされている場合でも呼び出されるようにハンドラーを登録するには true。ルーティング イベントが既に処理済みとしてマークされている場合はハンドラーを呼び出さないという既定の条件を使用してハンドラーを登録する場合は falsetrue to register the handler such that it is invoked even when the routed event is marked handled in its event data; false to register the handler with the default condition that it will not be invoked if the routed event is already marked handled.

既定値は、false です。The default is false.

ルーティング イベントの再処理を機械的に要求しないでください。Do not routinely ask to rehandle a routed event.

次の例で呼び出されるハンドラーを実装する、Initializedイベントを使用して、ページ上の名前付きの要素のいずれかに定義されたハンドラーをアタッチするページでhandledEventsToo``trueします。The following example implements a handler invoked on the Initialized event on a page that attaches a defined handler to one of the named elements on the page using handledEventsToo true. このハンドラー、経路上の別の要素が共有イベント データ、ルートでその処理要素に到達する前に処理済みとしてマークされている場合でも呼び出されます。This handler would be invoked even if another element along the route marked the shared event data as handled before reaching the handling element in the route.

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

注釈

複雑な作業は、実用的な方法で低レベルの入力イベントを処理します。Processing low-level input events in a practical way is a complex task. 多くのコントロールは、特定のイベントが処理済みとしてマークされてし、別のより直感的なイベントに置き換えの動作を実装します。Many controls implement behavior where a certain event is marked as handled, and is replaced by another more intuitive event. 一般に、これを行うための設計上の意図がある場合を処理済みとして、コントロールは、プラットフォームの入力イベントをマークだけです。Generally, a control will only mark a platform input event as handled if there is some design intention for doing so. 特定のシナリオでこれらの設計意図、特定の入力イベントの処理が必要とは限りません。In certain scenarios, those design intentions might not be what your particular handling of the input event requires. その登録するこのようなシナリオがハンドラーをhandledEventsTooとしてtrueが適切です。It is for these scenarios that registering handlers with handledEventsToo as true is appropriate. 実行しないでこの日常的にします。But you should not do this routinely. 処理される場合でも、すべてのイベントに応答ハンドラーを呼び出すと、独自のアプリケーション イベント処理ロジックが複雑になります。Invoking handlers in response to all events even if handled will complicate your own application event processing logic. ハンドラーのロジックが多くの場合は、パフォーマンスの低下を参照してください可能性があります。You may see a decrease in performance if the handler logic is substantial. 既に特定のコントロールがアプリケーション ロジックで処理するイベントを処理している開発プロセス中に検出する場所の場合の処理済みイベントのハンドラーをアタッチの使用を予約する必要があります。You should reserve the use of attaching handlers for already-handled events for situations where you have already discovered during the development process that certain controls are handling events that you still want to handle with application logic.

クラスの特定のイベントとコントロールの組み合わせの動作を処理を回避するための別の手法では、代わりにそのイベントのプレビューを使用します。Another technique for avoiding the class handling behavior of certain event-control combinations is to use that event's preview alternative. たとえば場合、MouseLeftButtonDown処理済みとしてマークは、クラス処理によってありますのハンドラーを追加するPreviewMouseLeftButtonDown代わりにします。For example, if MouseLeftButtonDown is marked handled by class handling, you might be able to add handlers for PreviewMouseLeftButtonDown instead.

例外を発生させずは、同じイベントに対して同じハンドラーを複数回追加できます。You can add the same handler for the same event multiple times without raising an exception. ただし、ハンドラーには、イベントを処理するときに複数回が実際に呼び出されます。However, the handler is actually invoked multiple times when the event is handled. そのため、この動作では次の方法でハンドラーの実装で考慮する必要があります副作用がある可能性がありますを検討してください。Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

通常の"add"アクセサーの実装を提供するこのメソッドを使用する、Microsoft .NETMicrosoft .NETカスタム ルーティング イベントのイベントへのアクセス パターン。You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NETMicrosoft .NET event access pattern of a custom routed event.

適用対象