Événements liés à la souris dans les Windows Forms
Mise à jour : novembre 2007
Lorsque vous gérez les entrées de la souris, vous souhaitez habituellement connaître l'emplacement du pointeur de la souris et l'état des boutons de souris. Cette rubrique fournit des détails sur les méthodes d'obtention de ces informations à partir des événements de souris, et explique l'ordre dans lequel les événements de clic de souris sont déclenchés dans les contrôles Windows Forms. Pour obtenir la liste et la description de tous les événements de souris, consultez Fonctionnement des entrées de la souris dans les Windows Forms.
Un MouseEventArgs est envoyé aux gestionnaires d'événements de souris concernant les clics sur un bouton de souris et le suivi de déplacements de la souris. MouseEventArgs fournit des informations sur l'état actuel de la souris, y compris l'emplacement du pointeur de la souris dans les coordonnées clientes, l'activation des boutons de souris et de la roulette de la souris. Plusieurs événements de souris, tels que ceux qui envoient une notification lorsque le pointeur de la souris entre dans les limites d'un contrôle ou en sort, envoient EventArgs au gestionnaire d'événements sans informations complémentaires.
Si vous souhaitez connaître l'état actuel des boutons de souris ou l'emplacement du pointeur de la souris, et voulez éviter de gérer un événement de souris, vous pouvez également utiliser les propriétés MouseButtons et MousePosition de la classe Control. MouseButtons retourne des informations indiquant les boutons de souris actuellement utilisés. MousePosition retourne les coordonnées d'écran du pointeur de la souris et est équivalent à la valeur retournée par Position.
Étant donné que certaines informations sur l'emplacement de la souris se trouvent dans les coordonnées clientes et que d'autres figurent dans les coordonnées d'écran, vous devrez peut-être convertir un point d'un système de coordonnées vers un autre. Vous pouvez le faire facilement en utilisant les méthodes PointToClient et PointToScreen disponibles dans la classe Control.
Si vous souhaitez gérer des événements de clic de souris dans l'ordre approprié, vous devez connaître l'ordre dans lequel les événements Click sont déclenchés dans les contrôles Windows Forms. Tous les contrôles Windows Forms déclenchent des événements Click dans le même ordre lorsqu'un bouton de souris est enfoncé et relâché (quel que soit le bouton), sauf indication contraire figurant dans la liste suivante pour des contrôles individuels. La liste suivante indique l'ordre des événements déclenchés pour un clic simple :
Événement MouseDown.
Événement Click.
Événement MouseClick.
Événement MouseUp.
La liste suivante indique l'ordre des événements déclenchés pour un double clic :
Événement MouseDown.
Événement Click.
Événement MouseClick.
Événement MouseUp.
Événement MouseDown.
Événement DoubleClick. (Cela peut varier, selon si le bit de style StandardDoubleClick du contrôle concerné a la valeur true. Pour plus d'informations sur la définition d'un bit ControlStyles, consultez la méthode SetStyle.)
Événement MouseDoubleClick.
Événement MouseUp.
Pour obtenir un exemple de code qui illustre l'ordre des événements de clic de souris, consultez Comment : gérer des événements d'entrée d'utilisateur dans les contrôles Windows Forms.
Les contrôles suivants ne sont pas conformes au comportement de l'événement de clic de souris standard :
Contrôles Button, CheckBox, ComboBox et RadioButton
Remarque : Pour le contrôle ComboBox, le comportement de l'événement détaillé plus loin se produit si l'utilisateur clique sur le champ d'édition, le bouton ou un élément dans la liste.
Clic avec le bouton gauche : Click, MouseClick
Clic avec le bouton droit : aucun événement Click déclenché
Double-clic avec le bouton gauche : Click, MouseClick; Click, MouseClick
Double-clic avec le bouton droit : aucun événement Click déclenché
Contrôles TextBox, RichTextBox, ListBox, MaskedTextBox et CheckedListBox
Remarque : Le comportement de l'événement détaillé plus loin se produit lorsque l'utilisateur clique dans ces contrôles.
Clic avec le bouton gauche : Click, MouseClick
Clic avec le bouton droit : aucun événement Click déclenché
Double-clic avec le bouton gauche : Click, MouseClick; DoubleClick, MouseDoubleClick
Double-clic avec le bouton droit : aucun événement Click déclenché
Contrôle ListView
Remarque : Le comportement de l'événement détaillé plus loin ne se produit que lorsque l'utilisateur clique sur les éléments du contrôle ListView. Aucun événement n'est déclenché si l'utilisateur clique à un autre endroit dans le contrôle. Outre les événements décrits plus loin, il existe des événements BeforeLabelEdit et AfterLabelEdit qui peuvent être utiles si vous souhaitez utiliser la validation avec le contrôle ListView.
Clic avec le bouton gauche : Click, MouseClick
Clic avec le bouton droit : Click, MouseClick
Double-clic avec le bouton gauche : Click, MouseClick; DoubleClick, MouseDoubleClick
Double-clic avec le bouton droit : Click, MouseClick; DoubleClick, MouseDoubleClick
Contrôle TreeView
Remarque : Le comportement de l'événement détaillé plus loin ne se produit que lorsque l'utilisateur clique sur les éléments ou à droite de ceux-ci dans le contrôle TreeView. Aucun événement n'est déclenché si l'utilisateur clique à un autre endroit dans le contrôle. Outre les événements décrits plus loin, il existe des événements BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck et AfterLabelEdit, qui peuvent être utiles si vous souhaitez utiliser la validation avec le contrôle TreeView.
Clic avec le bouton gauche : Click, MouseClick
Clic avec le bouton droit : Click, MouseClick
Double-clic avec le bouton gauche : Click, MouseClick; DoubleClick, MouseDoubleClick
Double-clic avec le bouton droit : Click, MouseClick; DoubleClick, MouseDoubleClick
Les contrôles de basculement, tels que les contrôles qui dérivent de la classe ButtonBase, ont le comportement de peinture décrit dans le tableau suivant lorsqu'ils sont associés à des événements de clic de souris :
L'utilisateur clique.
Le contrôle est peint enfoncé.
L'événement MouseDown est déclenché.
L'utilisateur relâche le bouton de la souris.
Le contrôle est peint en relief.
L'événement Click est déclenché.
L'événement MouseClick est déclenché.
L'événement MouseUp est déclenché.
Remarque : Si l'utilisateur déplace le pointeur à l'extérieur du contrôle de basculement alors que le bouton de la souris est enfoncé (si, par exemple, il déplace le pointeur à l'extérieur du contrôle Button tout en maintenant le bouton de la souris appuyé), le contrôle de basculement est peint en relief et seul l'événement MouseUp est déclenché. Les événements Click ou MouseClick ne se produiront pas dans cette situation.