Partager via


Vue d’ensemble du comportement de la souris glisser-déplacer (Windows Forms .NET)

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

Important

La documentation du Guide du bureau pour .NET 7 et .NET 6 est en cours de construction.

É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 ceux 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 utilisant les informations disponibles dans les arguments de ces événements, vous pouvez faciliter les opérations de glisser-déplacer.

Événements sur la cible de suppression actuelle

Le tableau suivant présente les événements qui se produisent sur la cible actuelle d'une opération de glisser-déplacer.

Événement de souris Description
DragEnter Cet événement se produit quand un objet est déplacé dans les limites d'un contrôle. Le gestionnaire pour cet événement reçoit un argument de type DragEventArgs.
DragOver Cet événement se produit quand un objet est déplacé alors que le pointeur de la souris se trouve dans les limites du contrôle. Le gestionnaire pour 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 pour cet événement reçoit un argument de type DragEventArgs.
DragLeave Cet événement se produit quand un objet est déplacé hors des limites d'un contrôle. Le gestionnaire pour 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 des touches de modification du clavier, les données déplacées et des valeurs DragDropEffects qui spécifient les opérations autorisées par la source de l'événement de glisser et l'effet de déplacement cible pour cette opération.

Événements sur la source de suppression

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 Description
GiveFeedback Cet événement se produit pendant une opération glisser. Il permet de fournir une aide visuelle à l’utilisateur (par exemple la modification du pointeur de souris) pour signaler que l’opération de glisser-déplacer est en cours. Le gestionnaire pour 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 pour 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 modification du clavier, une valeur indiquant si la touche Échappement a été enfoncée et une valeur DragAction qui peut être définie pour spécifier si l'opération de 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 qui fournit les données associées à la suppression et à la DragDropEffects valeur.

Définissez la propriété true du AllowDrop 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 sur le 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 un glisser d’un Label contrôle vers un TextBox. Une fois le glisser terminé, le TextBox résultat répond en affectant le texte de l’étiquette lui-même.

// 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