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 イベント アクセス パターンの "追加" アクセサーの実装を提供します。
適用対象
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
登録します。 しかし、これを日常的に行うべきではありません。 処理された場合でも、すべてのイベントに応答してハンドラーを呼び出すと、独自のアプリケーション イベント処理ロジックが複雑になります。 ハンドラー ロジックが大きい場合は、パフォーマンスが低下する可能性があります。 特定のコントロールがアプリケーション ロジックで処理するイベントを処理している開発プロセス中に既に検出された状況では、既に処理済みのイベントにハンドラーをアタッチする使用を予約する必要があります。
特定のイベントコントロールの組み合わせのクラス処理動作を回避するためのもう 1 つの手法は、そのイベントのプレビューの代替手段を使用することです。 たとえば、 がクラス処理によって処理済みとしてマークされている場合 MouseLeftButtonDown は、 のハンドラーを PreviewMouseLeftButtonDown 代わりに追加できます。
例外を発生させずに、同じイベントに対して同じハンドラーを複数回追加できます。 ただし、イベントが処理されると、ハンドラーは実際には複数回呼び出されます。 したがって、ハンドラーの実装でこの動作に考慮すべき副作用がある可能性がある方法を検討してください。
通常、このメソッドを使用して、カスタム ルーティング イベントの Microsoft .NET イベント アクセス パターンの "追加" アクセサーの実装を提供します。
適用対象
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示