UIElement.PointerPressed イベント
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ポインター デバイスがこの要素内で Press アクションを開始したときに発生します。
public:
virtual event PointerEventHandler ^ PointerPressed;
// Register
event_token PointerPressed(PointerEventHandler const& handler) const;
// Revoke with event_token
void PointerPressed(event_token const* cookie) const;
// Revoke with event_revoker
UIElement::PointerPressed_revoker PointerPressed(auto_revoke_t, PointerEventHandler const& handler) const;
public event PointerEventHandler PointerPressed;
function onPointerPressed(eventArgs) { /* Your code */ }
uIElement.addEventListener("pointerpressed", onPointerPressed);
uIElement.removeEventListener("pointerpressed", onPointerPressed);
- or -
uIElement.onpointerpressed = onPointerPressed;
Public Custom Event PointerPressed As PointerEventHandler
<uiElement PointerPressed="eventhandler"/>
イベントの種類
注釈
タッチ、マウス、ペン/スタイラスの操作は、アプリでポインター入力として受信、処理、管理されます。 これらの操作は、いずれもイベントを PointerPressed
生成できます。 詳細については、「 ポインター入力を処理する」を参照してください。 ポインター イベントは、複数のポインターとそのリレーションシップに関心があるシナリオ、または正確な座標位置などの各ポインターの詳細を調べる場合に使用します。 それ以外の場合は、 タップなどのジェスチャ イベントの処理を検討できます。
PointerEventHandler に基づくハンドラーを使用して、このイベントを処理します。
マウス入力が最初に検出されると、割り当てられている単一ポインターと関連付けられます。 マウス ボタン (左、ホイール、または右) をクリックすると、ポインターとイベントを介 PointerPressed
したボタンとの間に二次的な関連付けが作成されます。
PointerReleased イベントは、同じマウス ボタンを離したときにだけ発生します (イベントが完了するまではそのポインターに他のボタンが関連付けられることはありません)。 この排他的な関連付けのために、他のマウス ボタンをクリックした場合は、PointerMoved イベントによってルーティングされます。 次の例に示すように、このイベントを処理するときにマウス ボタンの状態をテストできます。
マウス入力デバイスからのポインター イベントは、通常、アプリの有効期間のイベントの詳細で同じ PointerId を 持ちます。
PointerPressed
はルーティング イベントです。 ルーティング イベントの概念の詳細については、「 イベントとルーティング イベントの概要」を参照してください。
タッチ操作や、タッチ操作の結果に発生する対話/操作イベントについては、ヒット テストで要素が表示されない場合、イベント ソースとして使用したり、操作に関連付けられたイベントを起動することはできません。 UIElement.Visibility はVisible である必要があります。 派生型の他のプロパティも、ヒット テストの可視性に影響します。 詳しくは、「イベントとルーティング イベントの概要」をご覧ください。
PointerPressed
は、イベントのイベント データが Handled とマークされている場合でも呼び出されるルートにイベント ハンドラーをアタッチする機能をサポートしています。 「 AddHandler」を参照してください。
特定のWindows ランタイム コントロールには、入力イベントのクラスベースの処理がPointerPressed
含まれる場合があります。 その場合、コントロールには OnPointerPressed メソッドのオーバーライドが含まれている可能性があります。 通常、イベントはクラス ハンドラーによって処理済みとしてマークされ PointerPressed
、そのコントロール上のユーザー コード ハンドラーによる処理ではイベントは発生しません。 たとえば、 ButtonBase には、 を処理 PointerPressed
するクラス処理があり、代わりに Click が発生します。 イベントのクラスベースの処理のしくみの詳細については、「 イベントとルーティング イベントの概要」を参照してください。
コントロールには、イベントとは別に実行される PointerDownThemeAnimation パーソナリティ アニメーションを含めることもできます。
ポインター キャプチャ
PointerPressed
は、ポインターをキャプチャするときに開始イベントとして使用される場合があるため、ポインターがダウンしている限り、さらにポインター関連のイベントはすべて特定の要素によってキャプチャされます。 ポインターをキャプチャするには、キャプチャを維持する必要がある特定の UI 要素で CapturePointer メソッドを呼び出します。 これは通常、イベント ハンドラー内でPointerPressed
行われ、イベントの sender
で を呼び出CapturePointer
します。 ポインターをキャプチャする方法と、それを行う必要がある理由の詳細については、「」を参照してください CapturePointer
。
PointerPressed イベントとジェスチャ イベント、または操作イベント
最初にイベントをPointerPressed
発生させるユーザー アクションは、最終的には、入力デバイスがマウスでない限り、Hold ジェスチャを表す Hold イベントが発生する可能性があります。 が発生 PointerPressed
する要素に既定以外の ManipulationMode 値がある場合、アクションによって ManipulationStarted などのさまざまな操作イベントが発生する可能性もあります。 詳細については、「 ポインター入力の処理」の「操作イベントの使用」セクションを参照してください。
起動するとPointerPressed
、イベントを発生させる前にポインターが解放されるのを待機しているため、Tapped などのジェスチャ イベントはまだ発生しません。
アプリのユーザー操作の一般的な設計規則として、操作に対して処理できるコントロール固有のイベントがあるかどうか、または適切なジェスチャ イベントがあるかどうかを調べる必要があります。 たとえば、コントロールが Button の場合、そのコントロールには、ユーザーがボタンのアクションを呼び出すときに特に目的とする Click イベントがあります。 または、要素がボタンではなく、要素のプライマリ アクションに対して および イベントを処理している場合は、 Tapped を処理します。
ジェスチャ イベントは、 IsTapEnabled などのプロパティを設定することで、個々の要素で明示的に無効にすることができます。 操作を処理している場合はジェスチャ イベントを無効にすることができますが、ポインター イベントを処理している場合は通常、ジェスチャ イベントを無効にする必要はありません。 ポインター イベントを明示的に無効にすることはできませんが、それらを処理しないことを選択できます。
PointerPressed と PointerReleased
PointerReleased ではなく他のイベントは、アクションの最後に発生する可能性があります (PointerCanceled や PointerCaptureLost など)。 イベントがPointerReleased
常にPointerPressed
ペアで発生することに依存しないでください。 適切に機能するには、アプリで Press アクションの結論を表す可能性のあるすべてのイベントをリッスンして処理する必要があります。 発生しない理由 PointerReleased
の一部を次に示します。
- 特定のハードウェアがタッチ アクションと プレス アクションを処理する方法の違い
- 別のポインターからのプログラム ポインター キャプチャ
- 解像度やモニター設定の変更など、表示領域の関係を変更するユーザー アクション
- 前のタッチ アクションと同じサーフェスに触れるスタイラスなどの入力操作