UIElement.PointerMoved Événement
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Se produit lorsqu’un pointeur se déplace alors que le pointeur reste dans la zone de test d’accès de cet élément.
public:
virtual event PointerEventHandler ^ PointerMoved;
// Register
event_token PointerMoved(PointerEventHandler const& handler) const;
// Revoke with event_token
void PointerMoved(event_token const* cookie) const;
// Revoke with event_revoker
UIElement::PointerMoved_revoker PointerMoved(auto_revoke_t, PointerEventHandler const& handler) const;
public event PointerEventHandler PointerMoved;
function onPointerMoved(eventArgs) { /* Your code */ }
uIElement.addEventListener("pointermoved", onPointerMoved);
uIElement.removeEventListener("pointermoved", onPointerMoved);
- or -
uIElement.onpointermoved = onPointerMoved;
Public Custom Event PointerMoved As PointerEventHandler
<uiElement PointerMoved="eventhandler"/>
Type d'événement
Remarques
Les interactions tactiles, souris et stylet/stylet sont reçues, traitées et gérées en tant qu’entrée de pointeur dans l’application UWP. L’une de ces interactions peut produire un événement PointerMoved. Pour plus d’informations, consultez Gérer l’entrée de pointeur et la section « PointerMoved pour l’entrée de la souris et du stylet » de cette rubrique.
Dans certains scénarios d’interface utilisateur, en particulier si l’utilisateur utilise une souris, cet événement se déclenche beaucoup. Tenez compte du profil de performances du code que vous placez dans ce gestionnaire et envisagez des façons d’utiliser vos propres indicateurs ou tolérances qui peuvent limiter le nombre de fois où la logique doit réellement s’exécuter.
Cet événement est un événement routé. Pour plus d’informations sur le concept d’événement routé, consultez Vue d’ensemble des événements et des événements routés.
Pour les actions tactiles et pour les événements de manipulation ou spécifiques à l’interaction qui sont des conséquences d’une action tactile, un élément doit être visible au test de positionnement pour pouvoir être la source d’événement et déclencher l’événement associé à l’action. UIElement.Visibility doit être visible. D’autres propriétés de types dérivés affectent également la visibilité des tests d’accès. Pour plus d’informations, consultez Vue d’ensemble des événements et des événements routés.
Cet événement prend également en charge la possibilité d’attacher des gestionnaires d’événements à l’itinéraire qui sera appelé, même si les données d’événement de l’événement sont marquées Handled. Consultez AddHandler.
PointerMoved pour l’entrée de la souris et du stylet
Un périphérique d’entrée de souris a un curseur à l’écran qui est visible chaque fois que la souris se déplace au-dessus des limites d’un élément, même si aucun bouton de la souris n’est enfoncé à ce moment-là. Un comportement similaire est disponible pour l’entrée d’appareil de stylet, où les périphériques d’entrée peuvent détecter que le stylet pointe juste sur la surface de l’appareil d’entrée, mais ne le touche pas. L’entrée de la souris et du stylet déclenche donc les événements PointerMoved plus souvent que l’entrée tactile. Pour plus d’informations, voir Interactions avec la souris.
En revanche, un point tactile n’est détectable que si un doigt touche la surface. Un point tactile génère PointerMoved uniquement pendant que ce point tactile reste en contact constant avec la surface à mesure qu’il se déplace. Pour les types d’actions tactiles qui génèrent PointerMoved, il est également probable que l’action soit traitée comme une manipulation ou comme un mouvement. Pour plus d’informations, consultez Gérer l’entrée de pointeur.
L’entrée de la souris est associée à un pointeur unique affecté lorsque l’entrée de souris est détectée pour la première fois, et toutes les interactions initiées par la souris ont le même PointerId. Cliquer sur un bouton de souris (gauche, roulette ou droit) crée une association secondaire entre le pointeur et ce bouton via l’événement PointerPressed. L’événement PointerReleased est déclenché uniquement lorsque ce même bouton de souris est relâché (aucun autre bouton ne peut être associé au pointeur tant que cet événement n’est pas terminé). En raison de cette association exclusive, les autres clics de bouton de souris sont routés via l’événement PointerMoved. Vous pouvez tester l’état du bouton de la souris lors de la gestion de cet événement, comme indiqué dans cet exemple :
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);
}
Certaines applications, telles que les jeux, doivent suivre les mouvements relatifs de la souris pour des fonctionnalités spécifiques (par exemple, un trackball virtuel ou la caméra d’affichage) et n’utilisent pas le curseur système ou les coordonnées absolues de l’écran. Pour plus d’informations sur le masquage du curseur de la souris et l’ignorance des données absolues de la souris, consultez Déplacement relatif de la souris et CoreWindow.