Partager via


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

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

Événements de glisser-déposer

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 utilisant les informations disponibles dans les paramètres de ces événements, vous pouvez aisément simplifier les opérations de glisser-déposer.

Événements sur la cible de suppression actuelle

Le tableau suivant désigne les événements qui surviennent sur la cible actuelle d’une opération de glisser-déplacer.

Événement de souris Description
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 lorsqu’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 des touches de modification du clavier, les données en cours de glisser, et les valeurs DragDropEffects qui spécifient les opérations autorisées par la source de l’événement de glisser-déposer et l’effet de dépôt cible pour l’opération.

Événements sur la source de dépôt

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

Événement de souris Description
GiveFeedback Cet événement se produit pendant une opération de glissement. 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 est déclenché pendant une opération de glisser-déplacer et active la source de glisser-déplacer pour déterminer si l’opération glisser-déplacer 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 glissement et la cible de dépôt . Pour démarrer une opération 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 méthode DoDragDrop fournissant les données associées à la suppression et à la valeur DragDropEffects.

Définissez la propriété AllowDrop du contrôle cible définie sur true 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époser d’un contrôle Label vers un contrôle TextBox. Une fois le glisser terminé, le TextBox réagit en s'affectant à lui-même 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