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 必須是 可見的。 衍生型別的其他屬性也會影響點擊測試可見度。 如需詳細資訊,請參閱事件與路由事件概觀

PointerEntered 支援將事件處理常式附加至將叫用的路由的能力,即使事件的事件資料標示為 Handled也一樣。 請參閱 AddHandler

特定Windows 執行階段控制項可能有 PointerEntered 輸入事件的類別型處理。 如果是,控制項可能具有 OnPointerEntered方法的覆寫。 一般而言,事件不會被類別處理常式標示為已處理,因此 PointerEntered 您的使用者程式碼仍可處理 UI 中控制項的事件。 如需事件類別型處理運作方式的詳細資訊,請參閱 事件和路由事件概觀

滑鼠和手寫筆/手寫筆輸入的 PointerEntered

滑鼠輸入裝置具有螢幕游標,每當滑鼠移動時,即使沒有按下滑鼠按鍵,也一樣。 PointerEntered事件會在 元素引發的第一個 PointerMoved 事件之前。 類似的行為適用于手寫筆裝置輸入,其中輸入裝置可以偵測手寫筆停留在輸入裝置介面上, (IsInRange) 但無法觸碰它。 因此,滑鼠和手寫筆裝置輸入會在與觸控事件稍有不同的情況下引發 PointerEntered 事件。 如需詳細資訊,請參閱互動

觸控輸入的 PointerEntered

只有在手指觸碰表面時,才能偵測到觸控點。 每當觸控動作產生 PointerPressed 事件時,該事件就會緊接在事件前面,而且所有事件資料都是相同的兩個 PointerEntered 事件資訊, (相同的指標識別碼、相同位置等等。) 換句話說,指標會被視為在此時進入元素,而且元素被觸控點的位置。

或者,如果指標在移動時仍與表面保持固定接觸,並輸入元素的點擊測試界限,就會產生 PointerEntered 觸控點。 針對這類觸控動作,您也可以將動作當作操作或手勢來處理,而不是指標事件。 如需詳細資訊,請參閱 處理指標輸入

PointerEntered 的路由事件行為

PointerEntered 是路由事件。 如需路由事件概念的詳細資訊,請參閱 事件和路由事件概觀。 您可以在 XAML UI 中定義元素的多個 PointerEntered 事件,包括父子關聯性中的元素。 在一般 UI 組合中,子項目位於父元素界限內的某處,因此 PointerEntered 當指標移到父系時,父元素會先發生事件,然後在指標移到該處時發生子專案。 當子項目引發事件時,事件 PointerEntered 通常不會反升至父系,因為指標在父系範圍內,而且輸入系統也會混淆,以將事件發生次數路由 PointerEntered 傳送至父系。 您通常不想 PointerEntered 讓事件路由傳送,您只想要從寄件者處理它們。 您可以在處理常式中將 [已處理 ] 設定為 true ,明確地防止事件路由。

在少數情況下,可以看到 PointerEntered 父系的事件泡泡。 例如,如果您使用 RenderTransform 來位移父系界限以外的子項目,則當輸入子項目時,事件會泡泡到父元素,並提供事件資訊,如子項目引發事件的方式所報告。

指標擷

如果另一個專案已擷取指標, PointerEntered 即使擷取的指標進入元素的界限,也不會引發。 不過,如果在指標位於 元素上方時釋放指標擷取, PointerEntered 則會引發 ,即使在此案例中,指標可能仍然固定。 來自事件資料的 GetCurrentPoint 值可能是元素中間某個點,而不是沿著其邊緣的某個點,因為指標已在釋放擷取時位於元素上方。 如需指標擷取的詳細資訊,請參閱 CapturePointerMouse 互動

控制項的 PointerOver 視覺狀態

具有控制項範本的控制項只能在指標超出控制項界限時套用作用中的視覺狀態。 您不一定需要處理 PointerEnteredPointerExited 來取得或變更此行為。 您可能需要重新範本控制項。 如果您衍生自已經有叫用視覺狀態之低階輸入處理的現有控制項,您應該在 「CommonStates」 VisualStateGroup中提供名為 「PointerOver」 的視覺狀態,而內建控制項邏輯會在指標超過控制項時載入該視覺狀態。 指標的視覺狀態通常存在於可叫用或選取的控制項上,例如 ButtonListViewItem。 如果您衍生自 控制項之類的基 類,其沒有叫用視覺狀態的內建輸入事件處理,您可能需要覆寫 OnPointerEnteredOnPointerExited 自行取得此行為。

適用於

另請參閱