UIElement.PointerReleased Evento

Definizione

Si verifica quando viene rilasciato il dispositivo puntatore che in precedenza ha avviato un'azione Press , mentre all'interno di questo elemento. Si noti che la fine di un'azione Press non è garantita per generare un evento PointerReleased; altri eventi possono invece essere attivati. Per altre informazioni, vedere Osservazioni.

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

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

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

Tipo evento

Commenti

Le interazioni tocco, mouse e penna/stilo vengono ricevute, elaborate e gestite come input puntatore nell'app UWP. Una di queste interazioni può produrre un evento PointerReleased. Per altre informazioni, vedere Gestire l'input del puntatore.

Altri eventi anziché PointerReleased possono essere attivati alla fine dell'azione, ad esempio PointerCanceled o PointerCaptureLost. Non basarsi sugli eventi PointerPressed e PointerReleased che si verificano sempre in coppie. Per funzionare correttamente, l'app deve ascoltare e gestire tutti gli eventi che rappresentano probabilmente le conclusioni dell'azione Press . Alcuni dei motivi per cui non è possibile ottenere un'occorrenza PointerReleased sono:

  • Differenze nel modo in cui l'hardware specifico gestisce le azioni tocco e Premere azioni
  • Acquisizione del puntatore a livello di codice da un puntatore diverso
  • Azioni utente che modificano la relazione dell'area di visualizzazione, ad esempio la modifica della risoluzione o delle impostazioni di monitoraggio
  • Interazioni di input, ad esempio uno stilo che tocca la stessa superficie di un'azione tocco precedente

L'azione dell'utente che genera un evento PointerReleased inizialmente può causare l'evento Tapped o può causare anche RightTapped in condizioni che variano per ogni dispositivo. Per altre informazioni, vedere Tapped and RightTapped.

L'input del mouse è associato a un singolo puntatore assegnato quando l'input in questione è stato rilevato. 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 durante la gestione di questo evento, come illustrato nell'esempio seguente.

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);
}

PointerReleased è un evento indirizzato. Per altre informazioni sul concetto di evento indirizzato, vedere 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 visibile. Altre proprietà dei tipi derivati influiscono anche sulla visibilità di hit test. Per altre informazioni, vedi Panoramica degli eventi e degli eventi indirizzati.

PointerReleased supporta 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.

I controlli specifici Windows Runtime possono avere la gestione basata sulla classe per l'evento di input PointerReleased. In tal caso, il controllo ha probabilmente un override per il metodo OnPointerReleased. In genere l'evento viene contrassegnato come gestito dal gestore della classe e l'evento PointerReleased non viene generato per la gestione da parte dei gestori di codice utente nel controllo. Per altre informazioni sulla gestione basata sulla classe per gli eventi, vedere Panoramica degli eventi e degli eventi indirizzati.

I controlli possono anche avere un'animazione di personalità PointerUpThemeAnimation che viene eseguita indipendentemente dall'evento.

Si applica a

Vedi anche