Exporter (0) Imprimer
Développer tout
Développer Réduire

Control.DragDrop, événement

Se produit lors d'une opération de glisser-déplacer.

Espace de noms : System.Windows.Forms
Assembly : System.Windows.Forms (dans system.windows.forms.dll)

public event DragEventHandler DragDrop
/** @event */
public void add_DragDrop (DragEventHandler value)

/** @event */
public void remove_DragDrop (DragEventHandler value)

JScript prend en charge l'utilisation d'événements mais pas la déclaration de nouveaux événements.

Les propriétés X et Y de DragEventArgs sont exprimées en coordonnées d'écran et non en coordonnées clientes. La ligne de code Visual C# suivante convertit les propriétés en Point client :

Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));
RemarqueRemarque

Dans les versions antérieures au Microsoft .NET Framework version 2.0, si vous mettez un UserControl avec des événements DragEnter et DragDrop sur un Windows Form et que vous glissez-déplacez quelque chose sur le UserControl au moment du design, les événements DropDrop et DropEnter sont déclenchés. Toutefois, lorsque vous fermez et rouvrez la solution, les événements DragEnter et DragDrop ne sont pas redéclenchés.

Pour plus d'informations sur la gestion des événements, consultez Consommation d'événements.

L'exemple de code suivant illustre une opération de glisser-déplacer entre deux contrôles ListBox. L'exemple appelle la méthode DoDragDrop lorsque l'action glisser commence. L'action glisser démarre si la souris a été déplacée de plus de SystemInformation.DragSize par rapport à sa position précédente au cours de l'événement MouseDown. La méthode IndexFromPoint est utilisée pour déterminer l'index de l'élément à faire glisser au cours de l'événement MouseDown.

L'exemple montre également comment utiliser les curseurs personnalisés pour l'opération de glisser-déplacer. L'exemple requiert qu'il existe deux fichiers curseur, 3dwarro.cur et 3dwno.cur, dans le répertoire de l'application pour les curseurs de glisser-déplacer (drag) et d'interdiction (no-drop) personnalisés, respectivement. Les curseurs personnalisés sont utilisés si UseCustomCursorsCheckCheckBox est activé. Les curseurs personnalisés sont définis dans le gestionnaire d'événements GiveFeedback.

L'état du clavier est évalué dans le gestionnaire d'événements DragOver du ListBox de droite, afin de déterminer l'opération glisser en fonction de l'état des touches SHIFT, CTRL, ALT ou CTRL+ALT. L'emplacement dans le ListBox dans lequel l'opération déplacer peut avoir lieu est également déterminé au cours de l'événement DragOver. Si les données à déplacer ne sont pas String, DragEventArgs.Effect a alors la valeur None dans DragDropEffects. Enfin, l'état de l'opération déplacer est affiché dans DropLocationLabelLabel.

Les données à déplacer pour le ListBox de droite sont déterminées dans le gestionnaire d'événements DragDrop et la valeur String est ajoutée à l'emplacement approprié dans le ListBox. Si l'opération glisser va au-delà des limites du formulaire, l'opération glisser-déplacer est annulée dans le gestionnaire d'événements QueryContinueDrag.

Cet extrait de code montre comment utiliser l'événement DragDrop. Consultez la méthode DoDragDrop pour obtenir un exemple de code complet.

private void ListDragTarget_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) 
{
    // Ensure that the list item index is contained in the data.
    if (e.Data.GetDataPresent(typeof(System.String))) {

        Object item = (object)e.Data.GetData(typeof(System.String));

        // Perform drag-and-drop, depending upon the effect.
        if (e.Effect == DragDropEffects.Copy ||
            e.Effect == DragDropEffects.Move) {
        
            // Insert the item.
            if (indexOfItemUnderMouseToDrop != ListBox.NoMatches)
                ListDragTarget.Items.Insert(indexOfItemUnderMouseToDrop, item);
            else
                ListDragTarget.Items.Add(item);
            
        }
    }
    // Reset the label text.
    DropLocationLabel.Text = "None";
}

private void listDragTarget_DragDrop(Object sender, 
    System.Windows.Forms.DragEventArgs e)
{
    // Ensure that the list item index is contained in the data.
    if (e.get_Data().GetDataPresent(String.class.ToType())) {
        Object item = (Object)(e.get_Data().GetData(
               String.class.ToType()));
        // Perform drag-and-drop, depending upon the effect.
        if (e.get_Effect().Equals(DragDropEffects.Copy) || 
            e.get_Effect().Equals(DragDropEffects.Move)) {
            // Insert the item.
            if (indexOfItemUnderMouseToDrop != ListBox.NoMatches) {
                listDragTarget.get_Items().Insert(
                    indexOfItemUnderMouseToDrop, item);
            }
            else {
                listDragTarget.get_Items().Add(item);
            }
        }
    }
    // Reset the label text.
    dropLocationLabel.set_Text("None");
} //listDragTarget_DragDrop

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft