ReleasePointerCapture, méthode
TOC
Réduire la table des matières
Développer la table des matières

UIElement.ReleasePointerCapture Method

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

Syntaxe


public void ReleasePointerCapture(
  Pointer value
)

Paramètres

value

Type: Pointer

Référence du pointeur. Utilisez les références stockées des captures précédentes ou les données d'événement de pointeur pour obtenir cette référence.

Remarques

Vous appelez en général uniquement cette méthode si votre code d'application a précédemment appelé CapturePointer et a conservé une référence pour un ID de Pointer particulier connu pour être capturé. Vous obtiendrez généralement cette référence à partir des données d'événement PointerRoutedEventArgs pour le gestionnaire qui a appelé CapturePointer à l'origine ou à partir des données d'événement d'un autre gestionnaire d'événements associé telles que PointerMoved ou PointerReleased.

La libération par programmation de la capture de pointeur à l'aide de ReleasePointerCapture ne constitue pas l'unique moyen pour un élément de perdre la capture de pointeur. Par exemple, les événements déterminés par l'utilisateur, comme le relâchement du pointeur, peuvent provoquer la libération de la capture. L'événement PointerCaptureLost se produit dans ce cas au lieu de l'événement PointerReleased. Ou, votre code d'application peut indiquer un objet UIElement différent pour capturer les pointeurs, ce qui annule les captures effectuées par d'autres éléments. (Un UIElement peut capturer plusieurs pointeurs pour traiter des actions telles que les manipulations, mais uniquement un UIElement dans une application peut effectuer une capture à tout moment.) Pour plus d'informations, consultez Démarrage rapide : pointeurs.

Exemples

Cet exemple montre l'appel de ReleasePointerCapture basé sur la gestion de PointerReleased. Il indique également le code de capture initial du pointeur, et un modèle de suivi et de 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;
}


Configuration requise

Client minimal pris en charge

Windows 8

Serveur minimal pris en charge

Windows Server 2012

Espace de noms

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Métadonnées

Windows.winmd

Voir aussi

CapturePointer
PointerReleased
UIElement
PointerCaptureLost
Exemple d'entrée

 

 

Afficher:
© 2017 Microsoft