UIElement.AddHandler メソッド

定義

指定したルーティング イベントのルーティング イベント ハンドラーを追加します。このハンドラーは、現在の要素のハンドラー コレクションに追加されます。

オーバーロード

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 .NETMicrosoft .NET カスタムルーティングイベントのイベントアクセスパターンに対して "add" アクセサーの実装を提供するために使用します。

適用対象

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

ハンドルするルーティング イベントの識別子。

handler
Delegate

ハンドラーの実装に対する参照。

handledEventsToo
Boolean

イベント データ内でルーティング イベントが処理済みとしてマークされている場合でも呼び出されるようにハンドラーを登録するには true。ルーティング イベントが既に処理済みとしてマークされている場合はハンドラーを呼び出さないという既定の条件を使用してハンドラーを登録する場合は false

既定値は、false です。

ルーティング イベントの再処理を機械的に要求しないでください。

次の例では、 Initialized を使用して、定義されたハンドラーをページ上のいずれかの名前付き要素にアタッチするページで、イベントに対して呼び出されるハンドラーを実装し handledEventsToo true ます。 このハンドラーは、ルート上の別の要素が、ルートの処理要素に到達する前に、処理された共有イベントデータをマークした場合でも呼び出されます。

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 ます。 ただし、この作業は定期的に行うべきではありません。 処理された場合でも、すべてのイベントに応答してハンドラーを呼び出すと、独自のアプリケーションイベント処理ロジックが複雑になります。 ハンドラーのロジックが大きくなると、パフォーマンスが低下する可能性があります。 開発プロセス中に、アプリケーションロジックで処理するイベントを処理する必要がある場合は、既に処理されているイベントのハンドラーのアタッチを予約する必要があります。

特定のイベント制御の組み合わせのクラス処理動作を回避するためのもう1つの方法は、そのイベントのプレビューを使用することです。 たとえば、 MouseLeftButtonDown がクラス処理によって処理済みとしてマークされている場合は、代わりにのハンドラーを追加でき PreviewMouseLeftButtonDown ます。

同じイベントに対して、例外を発生させることなく同じハンドラーを複数回追加できます。 ただし、ハンドラーは実際にはイベントが処理されるときに複数回呼び出されます。 そのため、この動作がハンドラーの実装で考慮する必要がある副作用について考えてみてください。

このメソッドは、通常、 Microsoft .NETMicrosoft .NET カスタムルーティングイベントのイベントアクセスパターンに対して "add" アクセサーの実装を提供するために使用します。

適用対象