UIElement.PointerEntered イベント

定義

ポインターがこの要素のヒット テスト領域に入ったときに発生します。

public:
 virtual event PointerEventHandler ^ PointerEntered;
// Register
event_token PointerEntered(PointerEventHandler const& handler) const;

// Revoke with event_token
void PointerEntered(event_token const* cookie) const;

// Revoke with event_revoker
UIElement::PointerEntered_revoker PointerEntered(auto_revoke_t, PointerEventHandler const& handler) const;
public event PointerEventHandler PointerEntered;
function onPointerEntered(eventArgs) { /* Your code */ }
uIElement.addEventListener("pointerentered", onPointerEntered);
uIElement.removeEventListener("pointerentered", onPointerEntered);
- or -
uIElement.onpointerentered = onPointerEntered;
Public Custom Event PointerEntered As PointerEventHandler 
<uiElement PointerEntered="eventhandler"/>

イベントの種類

注釈

イベントは PointerEntered 、要素の境界領域に移動するポインターに応答して発生します。 タッチ、マウス、ペン/スタイラスの操作は、アプリでポインター入力として受信、処理、管理されます。 これらのデバイスとその相互作用は、イベントを PointerEntered 生成できます。 詳細については、「 ポインター入力の処理 」と、このトピックのその他の解説を参照してください。

PointerEntered はルーティング イベントです。 ルーティング イベントの概念の詳細については、「 イベントとルーティング イベントの概要」を参照してください。

PointerEventHandler に基づくハンドラーを使用して、このイベントを処理します。

タッチ操作や、タッチ操作の結果に発生する対話/操作イベントについては、ヒット テストで要素が表示されない場合、イベント ソースとして使用したり、操作に関連付けられたイベントを起動することはできません。 UIElement.Visibility はVisible である必要があります。 派生型の他のプロパティも、ヒット テストの可視性に影響します。 詳しくは、「イベントとルーティング イベントの概要」をご覧ください。

PointerEntered は、イベントのイベント データが Handled とマークされている場合でも呼び出されるルートにイベント ハンドラーをアタッチする機能をサポートしています。 「 AddHandler」を参照してください。

特定のWindows ランタイム コントロールには、PointerEntered 入力イベントのクラスベースの処理が含まれる場合があります。 その場合、コントロールには OnPointerEntered メソッドのオーバーライドが含まれている可能性があります。 通常、イベントはクラス ハンドラーによって処理済みとしてマークされないため、 PointerEntered UI のコントロールのユーザー コードでイベントを処理できます。 イベントのクラスベースの処理のしくみの詳細については、「 イベントとルーティング イベントの概要」を参照してください。

マウスとペン/スタイラスの入力用に PointerEntered

マウス入力デバイスには、画面上のカーソルがあり、その時点でマウス ボタンが押されていない場合でも、マウスが移動するたびに表示されます。 PointerEnteredイベントは、 要素によって発生した最初PointerMovedのイベントの前に置きます。 ペン デバイスの入力でも同様の動作を使用できます。入力デバイスでは、スタイラスが入力デバイスサーフェス (IsInRange) の上にマウス ポインターを合わせてもタッチされていないことを検出できます。 したがって、マウスとペンのデバイス入力では、タッチ イベントとは少し異なるケースでイベントが発生 PointerEntered します。 詳しくは、「マウス操作」をご覧ください。

タッチ入力用の PointerEntered

タッチ ポイントは、指がサーフェスに触れている場合にのみ検出できます。 タッチ アクションによって PointerPressed イベントが 発生するたびに、そのイベントの直前 PointerEntered にイベントが発生し、すべてのイベント データが 2 つのイベント (同じポインター ID、同じ位置など) に対して同じ情報になります。つまり、ポインターは、現時点で要素を入力し、要素がタッチ ポイントによってタッチされる位置を入力すると見なされます。

または、移動時にポインターがサーフェスと一定の接触を維持し、要素のヒット テスト境界に入ると、タッチ ポイントが生成 PointerEntered されます。 このようなタッチ アクションの場合は、ポインター イベントではなく、操作またはジェスチャとしてアクションを処理することもできます。 詳細については、「 ポインター入力を処理する」を参照してください。

PointerEntered のルーティング イベントの動作

PointerEntered はルーティング イベントです。 ルーティング イベントの概念の詳細については、「 イベントとルーティング イベントの概要」を参照してください。 親子関係にある要素を含め、XAML UI の要素に対して複数 PointerEntered のイベントを定義できます。 一般的な UI 構成では、子要素は親要素の境界内のどこかに存在するため PointerEntered 、ポインターが親に移動したときに最初に親に対してイベントが発生し、次にポインターが移動したときに子に対してイベントが発生します。 概念的にはポインターが既に親の境界内にあり、入力システムがイベントの発生を親にルーティングPointerEnteredするのは混乱を招くため、イベントはPointerEntered通常、子要素を起動したときに親にバブルしません。 通常は、イベントをルーティングする必要がなく PointerEntered 、送信者からのみ処理する必要があります。 ハンドラーで Handled を に設定することで、イベント ルーティングを true 明示的に防止できます。

まれに、親へのイベント バブルを PointerEntered 確認できます。 たとえば、 RenderTransform を使用して子要素を親の境界の外側にオフセットした場合、子要素が入力されると、イベントは親にバブルし、子要素がイベントを発生させた方法によって報告されるイベント情報を提供します。

ポインター キャプチャ

別の要素がポインターをキャプチャした場合、 PointerEntered キャプチャされたポインターが要素の境界に入っても起動しません。 ただし、ポインターが要素の上にあるときにポインター キャプチャが解放されると、 PointerEntered ポインターが起動します。この場合、ポインターが静止したままである可能性があるとさえ考えられます。 イベント データからの GetCurrentPoint の値は、キャプチャが解放されたときにポインターが要素の上に既に存在するため、エッジに沿ったポイントではなく、要素の中央のどこかにあるポイントである可能性があります。 ポインター キャプチャの詳細については、「 CapturePointer または マウス操作」を参照してください。

コントロールの PointerOver ビジュアル状態

コントロール テンプレートを持つコントロールは、ポインターがコントロールの境界を超えている場合にのみアクティブな表示状態を適用できます。 この動作を取得または変更するために、常に または PointerExited を処理PointerEnteredする必要はありません。 コントロールのテンプレートを再作成する必要がある場合があります。 ビジュアル状態を呼び出す低レベルの入力処理が既にある既存のコントロールから派生している場合は、"CommonStates" VisualStateGroup で "PointerOver" という名前のビジュアル状態を指定する必要があります。組み込みのコントロール ロジックは、ポインターがコントロールの上にあるたびにそのビジュアル状態を読み込みます。 ポインターオーバーの表示状態は、多くの場合、 ButtonListViewItem など、呼び出したり選択したりできるコントロールに存在します。 表示状態を呼び出す入力イベント処理が組み込まれていない Control などの基底クラスから派生している場合は、この動作を取得するために OnPointerEnteredOnPointerExited をオーバーライドする必要がある場合があります。

適用対象

こちらもご覧ください