Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour effectuer des opérations de glisser-déplacer dans des applications Windows, vous devez gérer une série d’événements, notamment les événements DragEnter, DragLeave et DragDrop. 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.
Glisser des données
Toutes les opérations de glisser-déplacer commencent par le glisser-déplacer. La fonctionnalité permettant de collecter les données lorsque le glissement commence est implémentée dans la méthode DoDragDrop.
Dans l’exemple suivant, l’événement MouseDown est utilisé pour démarrer l’opération de glissement, car il s’agit de l’action la plus intuitive (la plupart des actions de glisser-déplacer commencent par le bouton de la souris en cours de décompression). Toutefois, n’oubliez pas que n’importe quel événement peut être utilisé pour lancer une procédure glisser-déplacer.
Remarque
Certains contrôles ont des événements personnalisés spécifiques au glissement. Les contrôles ListView et TreeView, par exemple, ont un événement ItemDrag.
Pour démarrer une opération de glisser-déposer
Dans l'événement MouseDown du contrôle où le glisser-déposer commencera, utilisez la méthode
DoDragDrop
pour définir les données à déplacer et l'effet autorisé du glisser-déposer. Pour plus d’informations, consultez Data et AllowedEffect.L’exemple suivant montre comment lancer une opération de glissement. Le contrôle où le glisser-déposer commence est un Button contrôle, les données déplacées sont la chaîne représentant la propriété Text du contrôle Button, et les effets autorisés sont soit la copie, soit le déplacement.
Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown Button1.DoDragDrop(Button1.Text, DragDropEffects.Copy Or DragDropEffects.Move) End Sub
private void button1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { button1.DoDragDrop(button1.Text, DragDropEffects.Copy | DragDropEffects.Move); }
Remarque
Toutes les données peuvent être utilisées comme paramètre dans la
DoDragDrop
méthode ; dans l’exemple ci-dessus, la Text propriété du Button contrôle a été utilisée (au lieu de coder en dur une valeur ou de récupérer des données à partir d’un jeu de données), car la propriété était liée à l’emplacement à partir duquel le contrôle a été déplacé (le Button contrôle). Gardez cela à l'esprit lorsque vous incorporez des opérations de glisser-déplacer dans vos applications basées sur Windows.
Pendant qu’une opération de glissement est en vigueur, vous pouvez gérer l’événement QueryContinueDrag , qui « demande l’autorisation » du système pour poursuivre l’opération de glissement. Lors de la gestion de cette méthode, il s’agit également du point approprié pour appeler des méthodes qui auront un effet sur l’opération de glissement, par exemple l’expansion d’un TreeNode dans un contrôle TreeView lorsque le curseur survole celui-ci.
Suppression de données
Une fois que vous avez commencé à faire glisser des données à partir d'un emplacement sur un Windows Form ou un contrôle, vous souhaiterez naturellement les déposer quelque part. Le curseur change lorsqu’il traverse une zone d’un formulaire ou d’un contrôle correctement configuré pour supprimer des données. Toute zone au sein d’un Windows Form ou d’un contrôle peut être préparée pour pouvoir accepter les données déposées en définissant la propriété AllowDrop et en gérant les événements DragEnter et DragDrop.
Pour effectuer un dépôt
Définissez la AllowDrop propriété sur true.
Dans l'événement
DragEnter
du contrôle où le dépôt se produit, vérifiez que les données en cours de déplacement sont d’un type adéquat (dans ce cas, Text). Le code définit ensuite l’effet qui se produit lorsque la suppression se produit sur une valeur dans l’énumération DragDropEffects . Pour plus d’informations, consultez Effect.Private Sub TextBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter If (e.Data.GetDataPresent(DataFormats.Text)) Then e.Effect = DragDropEffects.Copy Else e.Effect = DragDropEffects.None End If End Sub
private void textBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.Text)) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; }
Remarque
Vous pouvez définir votre propre DataFormats objet en spécifiant votre propre objet comme Object paramètre de la SetData méthode. Assurez-vous que, lorsque vous procédez ainsi, que l’objet spécifié est sérialisable. Pour plus d’informations, consultez ISerializable.
Dans le DragDrop cas du contrôle où la suppression se produit, utilisez la GetData méthode pour récupérer les données déplacées. Pour plus d’informations, consultez Data.
Dans l’exemple ci-dessous, un TextBox contrôle est le contrôle vers lequel le déplacement se produit. Le code définit la Text propriété du TextBox contrôle égale aux données déplacées.
Private Sub TextBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragDrop TextBox1.Text = e.Data.GetData(DataFormats.Text).ToString End Sub
private void textBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { textBox1.Text = e.Data.GetData(DataFormats.Text).ToString(); }
Remarque
En outre, vous pouvez utiliser la KeyState propriété pour que, selon les touches enfoncées pendant l’opération de glisser-déplacer, certains effets se produisent (par exemple, il est standard de copier les données déplacées lorsque la touche Ctrl est enfoncée).
Voir aussi
.NET Desktop feedback