Condividi tramite


UIElement.PointerMoved Evento

Definizione

Si verifica quando un puntatore si sposta mentre il puntatore rimane all'interno dell'area di hit test di questo elemento.

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

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

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

Tipo evento

Commenti

Le interazioni tramite tocco, mouse e penna/stilo vengono ricevute, elaborate e gestite come input del puntatore nell'app UWP. Una di queste interazioni può produrre un evento PointerMoved. Per altre info, vedi Gestire l'input del puntatore e la sezione "Puntatore spostato per l'input del mouse e dello stilo" di questo argomento.

In alcuni scenari dell'interfaccia utente, in particolare se l'utente usa un mouse, questo evento verrà generato molto. Tenere presente il profilo delle prestazioni per il codice inserito in questo gestore e prendere in considerazione i modi per usare flag o tolleranze personalizzati che possono limitare il numero di volte in cui la logica deve effettivamente essere eseguita.

Questo evento è un evento indirizzato. Per altre info sul concetto di evento indirizzato, vedi Panoramica degli eventi e degli eventi indirizzati.

Per le azioni tocco e per gli eventi di modifica o specifici dell'interazione che sono la conseguenza di un'azione tocco, un elemento deve essere visibile tramite hit testing per poter essere l'origine dell'evento e attivare l'evento associato all'azione. UIElement.Visibility deve essere Visible. Altre proprietà dei tipi derivati influiscono anche sulla visibilità degli hit test. Per altre informazioni, vedi Panoramica degli eventi e degli eventi indirizzati.

Questo evento supporta anche la possibilità di collegare gestori eventi alla route che verrà richiamata anche se i dati dell'evento per l'evento sono contrassegnati come Handled. Vedere AddHandler.

Puntatore Spostato per l'input del mouse e dello stilo

Un dispositivo di input del mouse ha un cursore sullo schermo visibile ogni volta che il mouse si sposta sui limiti di un elemento, anche se al momento non viene premuto alcun pulsante del mouse. Un comportamento simile è disponibile per l'input del dispositivo penna, in cui i dispositivi di input possono rilevare che la penna sta passando il puntatore sulla superficie del dispositivo di input ma non toccandola. L'input del mouse e della penna attivano quindi gli eventi PointerMoved più spesso rispetto all'input tocco. Per altre info, vedi Interazioni tramite mouse.

Al contrario, un punto di tocco è rilevabile solo se un dito tocca la superficie. Un punto di tocco genererà PointerMoved solo mentre il punto di tocco rimane in contatto costante con la superficie durante lo spostamento. Per questi tipi di azioni di tocco che generano Puntatore Spostato, è anche probabile che l'azione venga elaborata come manipolazione o come movimento. Per altre info, vedi Gestire l'input del puntatore.

L'input del mouse è associato a un singolo puntatore assegnato quando viene rilevato per la prima volta l'input del mouse e tutte le interazioni avviate dal mouse hanno lo stesso PointerId. Quando si fa clic su un pulsante del mouse (sinistro, rotellina o destro), si crea un’associazione secondaria tra il puntatore e il pulsante premuto mediante l’evento PointerPressed. L’evento PointerReleased viene generato solo quando lo stesso pulsante del mouse viene rilasciato. Finché questo evento non è completato, nessun altro pulsante può essere associato al puntatore. A causa di questa associazione esclusiva, altri clic su un pulsante del mouse vengono instradati attraverso l’evento PointerMoved. È possibile testare lo stato del pulsante del mouse quando si gestisce questo evento, come illustrato in questo esempio:

private void Target_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    Windows.UI.Xaml.Input.Pointer ptr = e.Pointer;

    // Multiple, simultaneous mouse button inputs are processed here.
    // Mouse input is associated with a single pointer assigned when 
    // mouse input is first detected. 
    // Clicking additional mouse buttons (left, wheel, or right) during 
    // the interaction creates secondary associations between those buttons 
    // and the pointer through the pointer pressed event. 
    // The pointer released event is fired only when the last mouse button 
    // associated with the interaction (not necessarily the initial button) 
    // is released. 
    // Because of this exclusive association, other mouse button clicks are 
    // routed through the pointer move event.          
    if (ptr.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
    {
        // To get mouse state, we need extended pointer details.
        // We get the pointer info through the getCurrentPoint method
        // of the event argument. 
        Windows.UI.Input.PointerPoint ptrPt = e.GetCurrentPoint(Target);
        if (ptrPt.Properties.IsLeftButtonPressed)
        {
            eventLog.Text += "\nLeft button: " + ptrPt.PointerId;
        }
        if (ptrPt.Properties.IsMiddleButtonPressed)
        {
            eventLog.Text += "\nWheel button: " + ptrPt.PointerId;
        }
        if (ptrPt.Properties.IsRightButtonPressed)
        {
            eventLog.Text += "\nRight button: " + ptrPt.PointerId;
        }
    }

    // Prevent most handlers along the event route from handling the same event again.
    e.Handled = true;

    // Display pointer details.
    updateInfoPop(e);
}
private void Target_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    Windows.UI.Xaml.Input.Pointer ptr = e.Pointer;

    // Multiple, simultaneous mouse button inputs are processed here.
    // Mouse input is associated with a single pointer assigned when 
    // mouse input is first detected. 
    // Clicking additional mouse buttons (left, wheel, or right) during 
    // the interaction creates secondary associations between those buttons 
    // and the pointer through the pointer pressed event. 
    // The pointer released event is fired only when the last mouse button 
    // associated with the interaction (not necessarily the initial button) 
    // is released. 
    // Because of this exclusive association, other mouse button clicks are 
    // routed through the pointer move event.          
    if (ptr.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
    {
        // To get mouse state, we need extended pointer details.
        // We get the pointer info through the getCurrentPoint method
        // of the event argument. 
        Windows.UI.Input.PointerPoint ptrPt = e.GetCurrentPoint(Target);
        if (ptrPt.Properties.IsLeftButtonPressed)
        {
            eventLog.Text += "\nLeft button: " + ptrPt.PointerId;
        }
        if (ptrPt.Properties.IsMiddleButtonPressed)
        {
            eventLog.Text += "\nWheel button: " + ptrPt.PointerId;
        }
        if (ptrPt.Properties.IsRightButtonPressed)
        {
            eventLog.Text += "\nRight button: " + ptrPt.PointerId;
        }
    }

    // Prevent most handlers along the event route from handling the same event again.
    e.Handled = true;

    // Display pointer details.
    updateInfoPop(e);
}

Alcune applicazioni, ad esempio i giochi, devono tenere traccia dei movimenti relativi del mouse per funzionalità specifiche (ad esempio, una trackball virtuale o la fotocamera di visualizzazione) e non usano il cursore di sistema o le coordinate dello schermo assolute. Per informazioni dettagliate su come nascondere il cursore del mouse e ignorare i dati assoluti del mouse, vedere Movimento relativo del mouse e CoreWindow.

Si applica a

Vedi anche