Partilhar via


UIElement.PointerReleased Evento

Definição

Ocorre quando o dispositivo de ponteiro que iniciou anteriormente uma ação Press é liberado, enquanto está dentro desse elemento. Observe que não há garantia de que o fim de uma ação De imprensa dispare um evento PointerReleased; outros eventos podem ser acionados. Para obter mais informações, consulte Comentários.

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 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 PointerReleased. Para obter mais informações, consulte Entrada de ponteiro de identificador.

Outros eventos em vez de PointerReleased podem ser acionados no final da ação, por exemplo, PointerCanceled ou PointerCaptureLost. Não confie em eventos PointerPressed e PointerReleased sempre ocorrendo em pares. Para funcionar corretamente, seu aplicativo deve escutar e manipular todos os eventos que representam conclusões prováveis para a ação Pressionar . Alguns dos motivos pelos quais você pode não obter uma ocorrência PointerReleased são:

  • Diferenças na forma como um hardware específico lida com ações de toque e Ações de pressionamento
  • Uma captura de ponteiro programática de um ponteiro diferente
  • Ações do usuário que alteram a relação da área de exibição, como alterar a resolução ou monitorar configurações
  • Interações de entrada, como uma caneta tocando na mesma superfície que uma ação de toque anterior

A ação do usuário que dispara um evento PointerReleased inicialmente pode resultar no evento Tapped ou também pode resultar em RightTapped em condições que variam de acordo com o dispositivo. Para obter mais informações, consulte Tapped e RightTapped.

A entrada do mouse é associada a um único ponteiro atribuído quando detectada pela primeira vez. 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 no exemplo a seguir.

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 é 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 clique. Para saber mais, confira Visão geral de eventos e eventos roteados.

PointerReleased dá suporte à capacidade de anexar manipuladores de eventos à rota que será invocada mesmo se os dados do evento estiverem marcados como Manipulados. Consulte AddHandler.

Controles de Windows Runtime específicos podem ter manipulação baseada em classe para o evento de entrada PointerReleased. Nesse caso, o controle provavelmente tem uma substituição para o método OnPointerReleased. Normalmente, o evento é marcado como manipulado pelo manipulador de classe e o evento PointerReleased não é gerado para manipulação por nenhum manipulador de código de usuário nesse controle. Para obter mais informações sobre como funciona o tratamento baseado em classe para eventos, consulte Visão geral de eventos e eventos roteado.

Os controles também podem ter uma animação de personalidade PointerUpThemeAnimation que é executada independentemente do evento.

Aplica-se a

Confira também