Freigeben über


UIElement.PointerMoved Ereignis

Definition

Tritt auf, wenn ein Zeiger bewegt wird, während der Zeiger innerhalb des Treffertestbereichs dieses Elements verbleibt.

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

Ereignistyp

Hinweise

Touch-, Maus- und Stift-/Eingabestiftinteraktionen werden empfangen, verarbeitet und als Zeigereingabe in der UWP-App verwaltet. Jede dieser Interaktionen kann ein PointerMoved-Ereignis erzeugen. Weitere Informationen finden Sie unter Handle pointer input und the PointerMoved for mouse and stylus input (ZeigerMoved für Maus- und Eingabestifteingaben) dieses Themas.

In einigen Benutzeroberflächenszenarien, insbesondere wenn der Benutzer eine Maus verwendet, wird dieses Ereignis sehr ausgelöst. Beachten Sie das Leistungsprofil für Code, den Sie in diesen Handler einfügen, und überlegen Sie, wie Sie Ihre eigenen Flags oder Toleranzen verwenden können, die die Ausführung der Logik drosseln können.

Dieses Ereignis ist ein Routingereignis. Weitere Informationen zum Konzept von Routingereignissen finden Sie unter Übersicht über Ereignisse und Routingereignisse.

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 Sichtbarkeit von Treffertests aus. Weitere Informationen finden Sie unter Übersicht über Ereignisse und Routingereignisse.

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

ZeigerMoved für Maus- und Eingabestift

Ein Mauseingabegerät verfügt über einen Bildschirmcursor, der immer dann angezeigt wird, wenn die Maus über die Grenzen eines Elements bewegt wird, auch wenn zu diesem Zeitpunkt keine Maustaste gedrückt wird. Ein ähnliches Verhalten ist für die Eingabe des Stiftgeräts verfügbar, bei dem die Eingabegeräte erkennen können, dass der Stift direkt über die Oberfläche des Eingabegeräts bewegt, aber nicht berührt. Maus- und Stifteingaben lösen daher PointerMoved-Ereignisse häufiger aus als Toucheingaben. Weitere Informationen finden Sie unter Mausinteraktionen.

Im Gegensatz dazu ist ein Berührungspunkt nur erkennbar, wenn ein Finger die Oberfläche berührt. Ein Touchpunkt generiert nur PointerMoved, während dieser Berührungspunkt während der Bewegung in konstantem Kontakt mit der Oberfläche bleibt. Für diese Arten von Touchaktionen, die PointerMoved generieren, ist es auch wahrscheinlich, dass die Aktion als Manipulation oder als Geste verarbeitet wird. Weitere Informationen finden Sie unter Verarbeiten von Zeigereingaben.

Die Mauseingabe ist einem einzelnen Zeiger zugeordnet, der zugewiesen wird, wenn die Mauseingabe zum ersten Mal erkannt wird, und alle mausinitiierten Interaktionen weisen dieselbe Zeiger-Id auf. 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 Zustand der Maustaste bei der Behandlung dieses Ereignisses testen, wie in diesem 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);
}

Einige Anwendungen, z. B. Spiele, müssen relative Mausbewegungen für bestimmte Funktionen (z. B. einen virtuellen Trackball oder die Anzeigekamera) nachverfolgen und nicht den Systemcursor oder absolute Bildschirmkoordinaten verwenden. Ausführliche Informationen zum Ausblenden des Mauscursors und zum Ignorieren absoluter Mausdaten finden Sie unter Relative Mausbewegung und CoreWindow.

Gilt für:

Weitere Informationen