UIElement.PointerReleased Событие

Определение

Происходит при освобождении устройства указателя, которое ранее инициировало действие нажатия , в этом элементе. Обратите внимание, что окончание действия Нажатие не гарантирует срабатывание события PointerReleased. Вместо этого могут возникать другие события. Дополнительные сведения см. в разделе Примечания.

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

Тип события

Комментарии

Сенсорные, мыши, перо и перо получаются, обрабатываются и управляются как входные данные указателя в приложении UWP. Любое из этих взаимодействий может привести к возникновению события PointerReleased. Дополнительные сведения см. в разделе Обработка входных данных указателя.

Другие события вместо PointerReleased могут срабатать в конце действия, например PointerCanceled или PointerCaptureLost. Не полагайтесь на события PointerPressed и PointerReleased, которые всегда происходят парами. Для правильной работы приложение должно прослушивать и обрабатывать все события, которые представляют собой вероятные выводы действия Нажатие . Ниже приведены некоторые причины, по которым может не получиться событие PointerReleased:

  • Различия в том, как конкретное оборудование обрабатывает действия касания и нажатие
  • Программный захват указателя из другого указателя
  • Действия пользователя, изменяющие связь области отображения, например изменение разрешения или параметров монитора
  • Входные взаимодействия, такие как перо, касающееся той же поверхности, что и предыдущее действие касания

Действие пользователя, которое запускает событие PointerReleased, изначально может привести к событию Tapped или к rightTapped в условиях, которые зависят от устройства. Дополнительные сведения см. в разделах Касания и RightTapped.

Ввод мыши связывается с отдельным указателем, назначаемым при первом обнаружении ввода мыши. При щелчке кнопки мыши (левой, правой или колеса) создается вспомогательная связь между указателем и этой кнопкой с помощью события PointerPressed. Событие PointerReleased инициируется только тогда, когда отпускается та же кнопка мыши (никакая другая кнопка не может быть связана с указателем до завершения события). Из-за этой исключительной связи другие щелчки кнопок мыши обрабатываются с помощью события PointerMoved. Состояние кнопки мыши можно проверить при обработке этого события, как показано в следующем примере.

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 — это перенаправленное событие. Дополнительные сведения о концепции перенаправленных событий см. в статье Общие сведения о событиях и перенаправленных событиях.

Для сенсорного ввода, а также событий, связанных с взаимодействием, или событий операций, которые являются следствием сенсорного ввода, элемент должен быть видимым для проверки нажатия. В таком случае элемент становится источником события и вызывает событие, сопоставленное с действием. UIElement.Visibility должен быть видимым. Другие свойства производных типов также влияют на видимость проверки попадания. Дополнительные сведения см. в разделе Общие сведения о событиях и перенаправленных событиях.

PointerReleased поддерживает возможность подключения обработчиков событий к маршруту, который будет вызываться, даже если данные события помечены как Handled. См. раздел AddHandler.

Определенные элементы управления среда выполнения Windows могут иметь обработку на основе класса для события ввода PointerReleased. Если это так, элемент управления, вероятно, имеет переопределение метода OnPointerReleased. Обычно событие помечается обработчиком класса, а событие PointerReleased не вызывается для обработки никакими обработчиками пользовательского кода в этом элементе управления. Дополнительные сведения о том, как работает обработка событий на основе классов, см. в статье Общие сведения о событиях и перенаправленных событиях.

Элементы управления также могут иметь анимацию личности PointerUpThemeAnimation , которая выполняется независимо от события.

Применяется к

См. также раздел