Compartir a través de


UIElement.PointerMoved Evento

Definición

Se produce cuando un puntero se mueve mientras el puntero permanece dentro del área de prueba de posicionamiento de este 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 de evento

Comentarios

Las interacciones táctiles, del mouse y del lápiz o del lápiz se reciben, procesan y administran como entrada de puntero en la aplicación para UWP. Cualquiera de estas interacciones puede producir un evento PointerMoved. Para obtener más información, consulta Controlar la entrada del puntero y la sección "PointerMoved for mouse and stylus input" de este tema.

En algunos escenarios de interfaz de usuario, especialmente si el usuario usa un mouse, este evento se activará mucho. Tenga en cuenta el perfil de rendimiento para el código que ha colocado en este controlador y considere las formas de usar sus propias marcas o tolerancias que pueden limitar cuántas veces la lógica realmente necesita ejecutarse.

Este evento es un evento enrutado. Para obtener más información sobre el concepto de evento enrutado, consulta Información general sobre eventos y eventos enrutados.

En el caso de las acciones táctiles y también de los eventos de manipulación o específicos de la interacción que son consecuencia de una acción táctil, un elemento debe ser visible en la prueba de acceso para poder ser origen de eventos y generar el evento que está asociado a la acción. UIElement.Visibility debe ser Visible. Otras propiedades de los tipos derivados también afectan a la visibilidad de las pruebas de posicionamiento. Para obtener más información, consulta Introducción a eventos y eventos enrutados.

Este evento también admite la capacidad de adjuntar controladores de eventos a la ruta que se invocará incluso si los datos del evento se marcan como Handled. Consulte AddHandler.

PointerMoved para la entrada del mouse y el lápiz óptico

Un dispositivo de entrada del mouse tiene un cursor en pantalla que es visible cada vez que el mouse se mueve sobre los límites de un elemento, incluso si no se presiona ningún botón del mouse en el momento. Hay un comportamiento similar disponible para la entrada del dispositivo de lápiz, donde los dispositivos de entrada pueden detectar que el lápiz mantiene el puntero sobre la superficie del dispositivo de entrada, pero no lo toca. La entrada del mouse y el lápiz activarán eventos PointerMoved con más frecuencia que la entrada táctil. Para obtener más información, consulta Interacciones de mouse.

Por el contrario, un punto táctil solo se puede detectar si un dedo está tocando la superficie. Un punto táctil generará PointerMoved solo mientras ese punto táctil permanece en contacto constante con la superficie a medida que se mueve. Para estos tipos de acciones táctiles que generan PointerMoved, también es probable que la acción se procese como una manipulación o como gesto. Para obtener más información, consulta Controlar la entrada del puntero.

La entrada del mouse está asociada a un único puntero asignado cuando se detecta por primera vez la entrada del mouse y todas las interacciones iniciadas por el mouse tienen el mismo PointerId. Al hacer clic en un botón del mouse (izquierdo, rueda o derecho), se crea una asociación secundaria entre el puntero y ese botón a través del evento PointerPressed. El evento PointerReleased solo se desencadena cuando se libera ese mismo botón del mouse (no se puede asociar ningún otro botón con el puntero hasta que se complete este evento). Debido a esta asociación exclusiva, los clics de otros botones del mouse se enrutan a través del evento PointerMoved. Puede probar el estado del botón del mouse al controlar este evento, como se muestra en este ejemplo:

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

Algunas aplicaciones, como juegos, necesitan realizar un seguimiento de los movimientos relativos del mouse para una funcionalidad específica (por ejemplo, un trackball virtual o la cámara de visualización) y no usar el cursor del sistema o coordenadas de pantalla absolutas. Para obtener más información sobre cómo ocultar el cursor del mouse e ignorar los datos absolutos del mouse, vea Movimiento relativo del mouse y CoreWindow.

Se aplica a

Consulte también