Language

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 イベントをルーティングしないようにし、送信者からのみ処理する必要があります。 ハンドラーで [処理] を [ true ] に設定することで、イベント ルーティングを明示的に防止できます。

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

ポインター キャプチャ

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

コントロールの PointerOver の表示状態

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

適用対象

こちらもご覧ください