UIElement.ReleasePointerCapture(Pointer) Méthode

Définition

Libère les captures de pointeur pour la capture d’un pointeur spécifique par cet élément UIElement.

public:
 virtual void ReleasePointerCapture(Pointer ^ value) = ReleasePointerCapture;
void ReleasePointerCapture(Pointer const& value);
public void ReleasePointerCapture(Pointer value);
function releasePointerCapture(value)
Public Sub ReleasePointerCapture (value As Pointer)

Paramètres

value
Pointer

Référence du pointeur. Utilisez des références enregistrées à partir de captures précédentes ou des données d’événement de pointeur pour obtenir cette référence.

Exemples

Cet exemple montre l’appel ReleasePointerCapture basé sur la gestion de PointerReleased.

Il affiche également le code pour capturer le pointeur initialement, ainsi qu’un modèle pour le suivi et le comptage des références de pointeur.

int _pointerCount;

public Scenario2()
{
    this.InitializeComponent();
    bEnteredExited.PointerEntered += bEnteredExited_PointerEntered;
    bEnteredExited.PointerExited += bEnteredExited_PointerExited;
    bEnteredExited.PointerPressed += bEnteredExited_PointerPressed;
    bEnteredExited.PointerReleased += bEnteredExited_PointerReleased;
    bEnteredExited.PointerMoved += bEnteredExited_PointerMoved;

    // To code for multiple Pointers (that is, fingers), 
    // we track how many entered/exited.
    _pointerCount = 0;
}

private void bEnteredExited_PointerMoved(object sender, 
    PointerRoutedEventArgs e)
{
    Scenario2UpdateVisuals(sender as Border, "Moved");
}

private void bEnteredExited_PointerReleased(object sender, 
    PointerRoutedEventArgs e)
{
    ((Border)sender).ReleasePointerCapture(e.Pointer);
    txtCaptureStatus.Text = string.Empty;
}

//Can only get capture on PointerPressed (i.e. touch down, mouse click, pen press)
private void bEnteredExited_PointerPressed(object sender, 
    PointerRoutedEventArgs e)
{
    if (tbPointerCapture.IsOn)
    {
        bool _hasCapture = ((Border)sender).CapturePointer(e.Pointer);
        txtCaptureStatus.Text = "Got Capture: " + _hasCapture;
    }
}

private void bEnteredExited_PointerExited(object sender, 
    PointerRoutedEventArgs e)
{
    _pointerCount--;
    Scenario2UpdateVisuals(sender as Border, "Exited");
}

private void bEnteredExited_PointerEntered(object sender, 
    PointerRoutedEventArgs e)
{
    _pointerCount++;
    Scenario2UpdateVisuals(sender as Border, "Entered");
}

private void Scenario2UpdateVisuals(Border border, 
    String eventDescription)
{
    switch (eventDescription.ToLower())
    {
        case "exited":
            if (_pointerCount <= 0)
            {
                border.Background = new SolidColorBrush(Colors.Red);
                bEnteredExitedTextBlock.Text = eventDescription;
            }
            break;
        case "moved":
            RotateTransform rt = 
                (RotateTransform)bEnteredExitedTimer.RenderTransform;
            rt.Angle += 2;
            if (rt.Angle > 360) rt.Angle -= 360;
            break;
        default:
            border.Background = new SolidColorBrush(Colors.Green);
            bEnteredExitedTextBlock.Text = eventDescription;
            break;
    }
}

private void Scenario2Reset(object sender, RoutedEventArgs e)
{
    Scenario2Reset();
}

private void Scenario2Reset()
{
    bEnteredExited.Background = new SolidColorBrush(Colors.Green);
    bEnteredExitedTextBlock.Text = string.Empty;
}

Remarques

La libération par programmation de la capture de pointeur avec ReleasePointerCapture n’est pas la seule façon pour un élément de perdre la capture de pointeur. Par exemple, les événements pilotés par l’utilisateur, tels que la libération du pointeur (point de contact vers le haut, relâchement du bouton de la souris) peuvent entraîner l’annulation de la capture de pointeur.

Vous pouvez écouter l’événement PointerCaptureLostpour déterminer quand cela se produit.

Une autre façon d’annuler la capture de pointeur est si un pointeur se déplace hors d’une application et dans une autre application alors que les deux applications sont côte à côte.

Vous devez appeler ReleasePointerCapture uniquement si le code de votre application a précédemment appelé CapturePointer et a une référence au pointeur particulier instance où vous souhaitez libérer la capture de pointeur. Vous obtenez généralement cette Pointer référence par le biais d’un événement tel que PointerReleased ou peut-être PointerMoved.

Votre code d’application peut appeler CapturePointer à partir d’un élément UIElement différent de celui qui a une capture de pointeur actuelle. Si c’est le cas, cela annule toute capture de pointeur effectuée précédemment par d’autres éléments.

Un UIElementpeut capturer plusieurs pointeurs pour gérer plusieurs points tactiles, par exemple pour les manipulations, mais un UIElement seul dans une application peut avoir des captures de pointeurs à la fois. Pour plus d’informations, consultez Gérer l’entrée de pointeur.

S’applique à

Voir aussi