Freigeben über


UIElement.PointerReleased Ereignis

Definition

Tritt auf, wenn das Zeigergerät, das zuvor eine Press-Aktion initiiert hat, innerhalb dieses Elements freigegeben wird. Beachten Sie, dass beim Ende einer Press-Aktion nicht garantiert wird, dass ein PointerReleased-Ereignis ausgelöst wird. Andere Ereignisse können stattdessen ausgelöst werden. Weitere Informationen finden Sie unter Hinweise.

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"/>

Ereignistyp

Hinweise

Touch-, Maus- und Stift-/Eingabestiftinteraktionen werden als Zeigereingaben in der UWP-App empfangen, verarbeitet und verwaltet. Jede dieser Interaktionen kann ein PointerReleased-Ereignis erzeugen. Weitere Informationen finden Sie unter Behandeln von Zeigereingaben.

Andere Ereignisse anstelle von PointerReleased können am Ende der Aktion ausgelöst werden, z. B . PointerCanceled oder PointerCaptureLost. Verlassen Sie sich nicht auf PointerPressed - und PointerReleased-Ereignisse, die immer paarweise auftreten. Um ordnungsgemäß zu funktionieren, muss Ihre App alle Ereignisse abhören und behandeln, die wahrscheinliche Schlussfolgerungen für die Aktion Press darstellen. Einige der Gründe, warum Sie möglicherweise kein PointerReleased-Vorkommen erhalten, sind:

  • Unterschiede bei der Verarbeitung von Touch- und Pressaktionen durch bestimmte Hardware
  • Programmgesteuerte Zeigererfassung über einen anderen Zeiger
  • Benutzeraktionen, die die Beziehung des Anzeigebereichs ändern, z. B. Ändern von Auflösungs- oder Monitoreinstellungen
  • Eingabeinteraktionen wie ein Eingabestift, der dieselbe Oberfläche berührt wie eine vorherige Touchaktion

Die Benutzeraktion, die zunächst ein PointerReleased-Ereignis auslöst, kann zum Tapped-Ereignis führen oder auch zu RightTapped unter bedingungen führen, die je nach Gerät variieren. Weitere Informationen finden Sie unter Tapped und RightTapped.

Die Mauseingabe wird einem einzelnen Zeiger zugeordnet, der bei der ersten Ermittlung einer Mauseingabe zugewiesen wird. Durch das Klicken auf eine Maustaste (links, Mausrad oder rechts) wird über das PointerPressed-Ereignis eine zweite Zuordnung zwischen dem Zeiger und dieser Taste erstellt. Das PointerReleased-Ereignis wird nur ausgelöst, wenn dieselbe Maustaste losgelassen wird (dem Zeiger kann erst eine andere Taste zugeordnet werden, wenn dieses Ereignis abgeschlossen ist). Aufgrund dieser exklusiven Zuordnung werden Klicks auf andere Maustasten über das PointerMoved-Ereignis geleitet. Sie können den Maustastenzustand testen, wenn Sie dieses Ereignis behandeln, wie im folgenden Beispiel gezeigt.

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 ist ein Routingereignis. Weitere Informationen zum Konzept für routingfähige Ereignisse finden Sie unter Übersicht über Ereignisse und routingfähige Ereignisse.

Bei Toucheingabeaktionen und interaktionsspezifischen Ereignissen oder Manipulationsereignissen, die aus einer Toucheingabeaktion resultieren, muss ein Element bei Treffertests sichtbar sein, damit es der Ereignisquelle entsprechen und das der Aktion zugeordnete Ereignis auslösen kann. UIElement.Visibility muss sichtbar sein. Andere Eigenschaften abgeleiteter Typen wirken sich ebenfalls auf die Treffertestsicht aus. Weitere Informationen finden Sie unter Übersicht über Ereignisse und Routingereignisse.

PointerReleased unterstützt die Möglichkeit, Ereignishandler an die Route anzufügen, die aufgerufen wird, auch wenn die Ereignisdaten für das Ereignis als Verarbeitet gekennzeichnet sind. Weitere Informationen finden Sie unter AddHandler.

Bestimmte Windows-Runtime-Steuerelemente verfügen möglicherweise über eine klassenbasierte Behandlung für das PointerReleased-Eingabeereignis. Wenn ja, hat das Steuerelement wahrscheinlich eine Überschreibung für die Methode OnPointerReleased. In der Regel wird das Ereignis vom Klassenhandler behandelt, und das PointerReleased-Ereignis wird nicht zur Behandlung von Benutzercodehandlern für dieses Steuerelement ausgelöst. Weitere Informationen zur Funktionsweise der klassenbasierten Behandlung für Ereignisse finden Sie unter Übersicht über Ereignisse und Routingereignisse.

Steuerelemente können auch über eine PointerUpThemeAnimation-Persönlichkeitsanimation verfügen, die unabhängig vom Ereignis ausgeführt wird.

Gilt für:

Weitere Informationen