Partilhar via


UIElement.PointerMoved Evento

Definição

Ocorre quando um ponteiro se move enquanto o ponteiro permanece dentro da área de teste de ocorrência desse 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

Comentários

As interações de toque, mouse e caneta/caneta são recebidas, processadas e gerenciadas como entrada de ponteiro no aplicativo UWP. Qualquer uma dessas interações pode produzir um evento PointerMoved. Para obter mais informações, consulte Entrada do ponteiro de identificador e a seção "PointerMoved para entrada de mouse e caneta" deste tópico.

Em alguns cenários de interface do usuário, especialmente se o usuário estiver usando um mouse, esse evento disparará muito. Lembre-se do perfil de desempenho do código que você coloca nesse manipulador e considere maneiras de usar seus próprios sinalizadores ou tolerâncias que podem limitar quantas vezes a lógica realmente precisa ser executada.

Esse evento é um evento roteado. Para obter mais informações sobre o conceito de evento roteado, consulte Visão geral de eventos e eventos roteado.

Para ações de toque e também para eventos específicos de interação ou de manipulação resultantes de uma ação de toque, é preciso que o elemento esteja visível para teste de clique, para ser a origem do evento e acionar o evento associado à ação. UIElement.Visibility deve ser Visível. Outras propriedades de tipos derivados também afetam a visibilidade do teste de ocorrência. Para saber mais, confira Visão geral de eventos e eventos roteados.

Esse evento também dá suporte à capacidade de anexar manipuladores de eventos à rota que será invocada mesmo que os dados do evento sejam marcados como Manipulados. Consulte AddHandler.

PointerMoved para entrada de mouse e caneta

Um dispositivo de entrada do mouse tem um cursor na tela que fica visível sempre que o mouse se move sobre os limites de um elemento, mesmo que nenhum botão do mouse seja pressionado no momento. Comportamento semelhante está disponível para entrada de dispositivo de caneta, em que os dispositivos de entrada podem detectar que a caneta está pairando sobre a superfície do dispositivo de entrada, mas não tocando-a. Assim, a entrada de mouse e caneta disparará eventos PointerMoved com mais frequência do que a entrada por toque. Para obter mais informações, consulte Interações por mouse.

Por outro lado, um ponto de toque só será detectável se um dedo estiver tocando a superfície. Um ponto de toque gerará PointerMoved somente enquanto esse ponto de toque permanecer em contato constante com a superfície à medida que ele se move. Para esses tipos de ações de toque que estão gerando PointerMoved, também é provável que a ação seja processada como uma manipulação ou como um gesto. Para obter mais informações, consulte Entrada de ponteiro de identificador.

A entrada do mouse é associada a um único ponteiro atribuído quando a entrada do mouse é detectada pela primeira vez e todas as interações iniciadas pelo mouse têm a mesma PointerId. Se o usuário clicar em um botão do mouse (esquerdo, roda ou direito), será criada uma associação secundária entre o ponteiro e esse botão por meio do evento PointerPressed. O evento PointerReleased é disparado somente quando esse mesmo botão do mouse é liberado (nenhum outro botão pode ser associado ao ponteiro até que o evento seja concluído). Devido a essa associação exclusiva, outros cliques em botões do mouse são roteados por meio do evento PointerMoved. Você pode testar o estado do botão do mouse ao manipular esse evento, conforme mostrado neste exemplo:

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

Alguns aplicativos, como jogos, precisam acompanhar movimentos relativos do mouse para uma funcionalidade específica (por exemplo, um trackball virtual ou a câmera de exibição) e não usam o cursor do sistema ou as coordenadas de tela absolutas. Para obter detalhes sobre como ocultar o cursor do mouse e ignorar dados absolutos do mouse, consulte Movimentação relativa do mouse e CoreWindow.

Aplica-se a

Confira também