UIElement.PointerPressed É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 lorsque l’appareil pointeur lance une action Appuyer dans cet élément.
public:
virtual event PointerEventHandler ^ PointerPressed;
// Register
event_token PointerPressed(PointerEventHandler const& handler) const;
// Revoke with event_token
void PointerPressed(event_token const* cookie) const;
// Revoke with event_revoker
UIElement::PointerPressed_revoker PointerPressed(auto_revoke_t, PointerEventHandler const& handler) const;
public event PointerEventHandler PointerPressed;
function onPointerPressed(eventArgs) { /* Your code */ }
uIElement.addEventListener("pointerpressed", onPointerPressed);
uIElement.removeEventListener("pointerpressed", onPointerPressed);
- or -
uIElement.onpointerpressed = onPointerPressed;
Public Custom Event PointerPressed As PointerEventHandler
<uiElement PointerPressed="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 PointerPressed. Pour plus d’informations, consultez Gérer l’entrée de pointeur. Les événements de pointeur sont destinés aux scénarios où plusieurs pointeurs et leurs relations vous intéressent, ou lorsque vous examinez les spécificités de chaque pointeur, telles que la position exacte des coordonnées. Dans le cas contraire, vous pouvez envisager de gérer des événements de mouvement tels que Tappped.
Utilisez un gestionnaire basé sur PointerEventHandler pour gérer cet événement.
L’entrée de la souris est associée à un seul pointeur affecté lors de la première détection de l’entrée de la souris. 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 illustré dans l’exemple suivant.
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);
}
Les événements de pointeur d’un périphérique d’entrée de souris ont généralement le même PointerId dans les détails de l’événement pendant la durée de vie de l’application.
PointerPressed 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.
PointerPressed prend 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.
Des contrôles Windows Runtime spécifiques peuvent avoir une gestion basée sur les classes pour l’événement d’entrée PointerPressed. Si c’est le cas, le contrôle a probablement un remplacement pour la méthode OnPointerPressed. En règle générale, l’événement est marqué géré par le gestionnaire de classes, et l’événement PointerPressed n’est pas déclenché pour la gestion par les gestionnaires de code utilisateur sur ce contrôle. Par exemple, ButtonBase a une gestion des classes qui gère PointerPressed et déclenche à la place Click. Pour plus d’informations sur le fonctionnement de la gestion basée sur les classes des événements, consultez Vue d’ensemble des événements et des événements routés.
Les contrôles peuvent également avoir une animation de personnalité PointerDownThemeAnimation qui s’exécute indépendamment de l’événement.
Capture de pointeur
PointerPressed est parfois utilisé comme événement de lancement lors de la capture du pointeur, de sorte que d’autres événements liés au pointeur sont tous capturés par un élément particulier tant que le pointeur reste vers le bas. Pour capturer un pointeur, vous appelez la méthode CapturePointer sur un élément d’interface utilisateur spécifique qui doit maintenir la capture. Cela se fait généralement dans un gestionnaire d’événements PointerPressed, et vous appelez CapturePointer sur l’expéditeur de l’événement. Pour plus d’informations sur la capture d’un pointeur et la raison pour laquelle vous pouvez le faire, consultez CapturePointer.
Événements pointerPressed et de mouvement, ou événements de manipulation
L’action utilisateur qui déclenche initialement un événement PointerPressed peut finalement aboutir à l’événement Holding représentant un mouvement Hold , sauf si le périphérique d’entrée est une souris. Si l’élément dans lequel PointerPressed se produit a une valeur ManipulationMode autre que celle par défaut, l’action peut également entraîner divers événements de manipulation tels que ManipulationStarted. Pour plus d’informations, consultez la section « Utilisation d’événements de manipulation » dans Gérer l’entrée du pointeur.
Lorsque PointerPressed se déclenche, les événements de mouvement tels que Tappped ne se déclenchent pas encore, car les événements de mouvement autres que La conservation attendent que le pointeur soit libéré avant de déclencher un événement.
En tant que règle de conception générale pour les interactions utilisateur de votre application, vous devez déterminer s’il existe des événements spécifiques au contrôle que vous pouvez gérer pour une interaction ou des événements de mouvement appropriés. Par exemple, si votre contrôle est un Bouton, ce contrôle a un événement Click spécifiquement destiné lorsque l’utilisateur appelle l’action du bouton. Ou si votre élément n’est pas un bouton, mais que vous gérez et que vous gérez l’événement pour l’action principale d’un élément, vous gérez l’opération Tappped.
Les événements de mouvement peuvent être spécifiquement désactivés sur des éléments individuels en définissant des propriétés telles que IsTapEnabled. Vous pouvez désactiver les événements de mouvement si vous traitez des manipulations, mais vous n’avez généralement pas besoin de désactiver les événements de mouvement si vous gérez les événements de pointeur. Les événements de pointeur ne peuvent pas être spécifiquement désactivés, mais vous pouvez choisir de ne pas les gérer.
PointerPressed et PointerReleased
D’autres événements au lieu de PointerReleased peuvent se déclencher à la fin de l’action, par exemple PointerCanceled ou PointerCaptureLost. Ne vous fiez pas aux événements PointerPressed et PointerReleased qui se produisent toujours par paires. Pour fonctionner correctement, votre application doit écouter et gérer tous les événements qui représentent des conclusions probables à l’action Appuyer . Voici quelques-unes des raisons pour lesquelles vous n’obtenez peut-être pas d’occurrence pointerReleased :
- Différences dans la façon dont un matériel spécifique gère les actions tactiles et les actions d’appui
- Capture de pointeur par programmation à partir d’un autre pointeur
- Actions utilisateur qui modifient la relation de la zone d’affichage, telles que la modification des paramètres de résolution ou de surveillance
- Interactions d’entrée telles qu’un stylet touchant la même surface qu’une action tactile précédente