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

UIElement.CapturePointer Method

Définit la capture de pointeur sur un UIElement.

Syntaxe


public bool CapturePointer(
  Pointer value
)

Paramètres

value

Type: Pointer

Référence d'objet de pointeur.

Valeur de retour

Type: System.Boolean [.NET] | Platform::Boolean [C++]

true si l'objet a la capture de pointeur ; sinon, false.

Remarques

Vous ne pouvez capturer correctement le pointeur que si ce pointeur est enfoncé. Ce qui constitue physiquement une activation varie en fonction du type de périphérique (pointeur de la souris, point tactile, stylet). Si vous essayez de capturer un pointeur à mauvais escient, CapturePointer retourne false et aucune capture existante par d'autres éléments n'est affectée par votre appel de CapturePointer.

L'action d'interface utilisateur la plus courante pour la plupart des applications est de capturer un pointeur dans un gestionnaire d'événements PointerPressed. L'instance Pointer que vous obtenez des données d'événement PointerRoutedEventArgs de votre gestionnaire est la valeur vous devez passer pour le value paramètre de CapturePointer. Vous pouvez également capturer en fonction de PointerEntered si le pointeur entre dans les limites de l'élément lorsqu'il est déjà en cours d'activation, mais n'est pas déjà capturé par un autre élément, mais ceci est moins courant.

Vous capturez généralement le pointeur, car vous souhaitez que l'action actuelle du pointeur initialise un comportement de votre application, et vous ne souhaitez pas que d'autres éléments de l'interface utilisateur gèrent l'entrée de manière générale tant que le comportement n'est pas terminé par une libération de la capture de pointeur. Par exemple, si vous utilisez une action de pointeur et une capture pour repositionner un élément dans un conteneur d'interface utilisateur, tel que Canvas, il est souhaitable de contrôler le déclenchement des événements d'entrée lorsque le pointeur avec la capture est déplacé sur un autre élément. Sinon, ces événements peuvent annuler la capture et désactiver le comportement attendu.

La capture de pointeurs et les événements produits à partir des pointeurs capturés ne dépendent pas entièrement du code d'application. Si l'utilisateur libère le pointeur, et génère potentiellement un événement PointerReleased, les captures qui ont été réalisées pour ce pointeur sont perdues. Pour plus d'informations, consultez Démarrage rapide : Entrée tactile et le Démarrage rapide : pointeurs.

La méthode CapturePointer retourne false si le pointeur est déjà capturé.

Un UIElement peut capturer plusieurs périphériques de pointage à la fois ; c'est pourquoi il y a un paramètre value qui s'applique à un Pointer.

Exemples

Cet exemple montre l'appel de CapturePointer basé sur la gestion de PointerPressed. Il indique également 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

UIElement
Pointer
ReleasePointerCapture
Démarrage rapide : entrée tactile
Exemple d'entrée

 

 

Afficher:
© 2017 Microsoft