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具有處理 並改為引發Click的類別處理 PointerPressed
。 如需事件類別型處理運作方式的詳細資訊,請參閱 事件和路由事件概觀。
控制項也可能有 PointerDownThemeAnimation 個人化動畫,該動畫會獨立于事件執行。
指標擷
PointerPressed
有時候會在擷取指標時當做起始事件使用,如此一來,只要指標保持關閉,特定元素就會擷取進一步的指標相關事件。 若要擷取指標,您可以在應該維護擷取的特定 UI 元素上呼叫 CapturePointer 方法。 這通常會在 PointerPressed
事件處理常式內完成,而且您會在事件的 sender
上呼叫 CapturePointer
。 如需如何擷取指標以及如何執行此動作的詳細資訊,請參閱 CapturePointer
。
PointerPressed 和手勢事件,或操作事件
除非輸入裝置是滑鼠,否則一開始引發事件的使用者動作 PointerPressed
最終可能會導致代表保留手勢的Hold事件。 如果發生的 PointerPressed
元素具有非預設 ManipulationMode 值,則動作也可能會導致各種操作事件,例如 ManipulationStarted。 如需詳細資訊,請參閱 處理指標輸入中的一節。
引發時 PointerPressed
, 點選 之類的手勢事件尚不會引發,因為 除了 Holding 以外的手勢事件正在等待指標釋放再引發事件。
做為應用程式使用者互動的一般設計規則,您應該檢查是否有可處理互動的控制項特定事件,或適當的手勢事件。 例如,如果您的控制項是 Button,該控制項有 一個 Click 事件,特別適用于使用者叫用按鈕的動作。 或者,如果您的元素不是按鈕,但您正在處理元素的主要動作和事件,則會處理 Tapped。
您可以藉由設定 IsTapEnabled之類的屬性,在個別元素上特別停用手勢事件。 如果您正在處理操作,您可能會停用手勢事件,但處理指標事件時通常不需要停用手勢事件。 指標事件無法特別停用,但您可以選擇不處理它們。
PointerPressed 和 PointerReleased
其他事件,而不是 PointerReleased 可能會在動作結尾引發,例如 PointerCanceled 或 PointerCaptureLost。 請勿依賴 PointerPressed
,而且 PointerReleased
事件一律會以配對方式發生。 若要正常運作,您的應用程式必須接聽並處理代表 Press 動作可能結論的所有事件。 您可能未收到出現的一 PointerReleased
些原因如下:
- 特定硬體如何處理觸控動作和 按下 動作的差異
- 從不同的指標擷取程式設計指標
- 變更顯示區域關聯性的使用者動作,例如變更解析度或監視設定
- 輸入互動,例如觸控與先前觸控動作相同表面的手寫筆