Partager via


Vue d’ensemble du comportement de la souris glisser-déplacer

Windows Forms inclut un ensemble de méthodes, d’événements et de classes qui implémentent le comportement de glisser-déplacer. Cet article fournit une vue d’ensemble de la prise en charge des glisser-déplacer dans Windows Forms.

Événements glisser-déplacer

Il existe deux catégories d’événements dans une opération de glisser-déplacer : les événements qui se produisent sur la cible actuelle de l’opération de glisser-déplacer et d’événements qui se produisent sur la source de l’opération de glisser-déplacer. Pour effectuer des opérations de glisser-déplacer, vous devez gérer ces événements. En travaillant avec les informations disponibles dans les arguments d’événement de ces événements, vous pouvez facilement faciliter les opérations de glisser-déplacer.

Événements sur la zone de dépôt actuelle

Le tableau ci-dessous présente les événements qui surviennent sur la cible actuelle d'une opération de glisser-déposer.

Événement de souris Descriptif
DragEnter Cet événement se produit lorsqu’un objet est déplacé dans les limites du contrôle. Le gestionnaire de cet événement reçoit un argument de type DragEventArgs.
DragOver Cet événement se produit lorsqu’un objet est déplacé pendant que le pointeur de la souris se trouve dans les limites du contrôle. Le gestionnaire de cet événement reçoit un argument de type DragEventArgs.
DragDrop Cet événement se produit quand une opération de glisser-déplacer est terminée. Le gestionnaire de cet événement reçoit un argument de type DragEventArgs.
DragLeave Cet événement se produit lorsqu’un objet est déplacé hors des limites du contrôle. Le gestionnaire de cet événement reçoit un argument de type EventArgs.

La classe DragEventArgs fournit l’emplacement du pointeur de la souris, l’état actuel des boutons de la souris et les touches modificatrices du clavier, les données en cours de déplacement et les valeurs DragDropEffects qui spécifient les opérations autorisées par la source de l’événement de glisser et l’effet de dépôt cible pour l’opération.

Événements sur la source de dépose

Le tableau suivant présente les événements qui se produisent sur la source de l’opération de glisser-déposer.

Événement de souris Descriptif
GiveFeedback Cet événement se produit pendant une opération de glisser. Il offre la possibilité de donner un indicateur visuel à l’utilisateur que l’opération de glisser-déplacer se produit, comme la modification du pointeur de la souris. Le gestionnaire de cet événement reçoit un argument de type GiveFeedbackEventArgs.
QueryContinueDrag Cet événement se produit pendant une opération de glisser-déposer et permet à la source de cette opération de déterminer si l’opération doit être annulée. Le gestionnaire de cet événement reçoit un argument de type QueryContinueDragEventArgs.

La classe QueryContinueDragEventArgs fournit l’état actuel des boutons de la souris et des touches de modificateur du clavier, une valeur spécifiant si la touche ÉCHAP a été enfoncée et une valeur DragAction qui peut être définie pour spécifier si l’opération glisser-déplacer doit continuer.

Exécution d’un glisser-déplacer

Les opérations glisser-déplacer impliquent toujours deux composants, la source de glisser-déplacer et la cible de déplacement. Pour démarrer une opération de glisser-déplacer, désignez un contrôle comme source et gérez l’événement MouseDown . Dans le gestionnaire d’événements, appelez la DoDragDrop méthode fournissant les données associées à la suppression et une DragDropEffects valeur.

Définissez la propriété AllowDrop du true contrôle cible pour autoriser ce contrôle à accepter une opération de glisser-déplacer. La cible gère deux événements, tout d’abord un événement en réponse au glissement au-dessus du contrôle, tel que DragOver. Et un deuxième événement qui est l’action de suppression elle-même, DragDrop.

L’exemple suivant illustre une opération de glisser-déplacer d’un Label contrôle vers un TextBox. Une fois l’opération terminée, le TextBox répond en s’attribuant le texte de l’étiquette.

// Initiate the drag
private void label1_MouseDown(object sender, MouseEventArgs e) =>
    DoDragDrop(((Label)sender).Text, DragDropEffects.All);

// Set the effect filter and allow the drop on this control
private void textBox1_DragOver(object sender, DragEventArgs e) =>
    e.Effect = DragDropEffects.All;

// React to the drop on this control
private void textBox1_DragDrop(object sender, DragEventArgs e) =>
    textBox1.Text = (string)e.Data.GetData(typeof(string));
' Initiate the drag
Private Sub Label1_MouseDown(sender As Object, e As MouseEventArgs)
    DoDragDrop(DirectCast(sender, Label).Text, DragDropEffects.All)
End Sub

' Set the effect filter and allow the drop on this control
Private Sub TextBox1_DragOver(sender As Object, e As DragEventArgs)
    e.Effect = DragDropEffects.All
End Sub

' React to the drop on this control
Private Sub TextBox1_DragDrop(sender As Object, e As DragEventArgs)
    TextBox1.Text = e.Data.GetData(GetType(String))
End Sub

Pour plus d’informations sur les effets de glissement, consultez Data et AllowedEffect.

Voir aussi