DragAction, énumération
TOC
Réduire la table des matières
Développer la table des matières

DragAction, énumération

Spécifie si une opération de glisser-déplacer doit se poursuivre et de quelle façon.

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

[ComVisibleAttribute(true)] 
public enum DragAction
/** @attribute ComVisibleAttribute(true) */ 
public enum DragAction
ComVisibleAttribute(true) 
public enum DragAction

 Nom de membreDescription
CancelL'opération est annulée sans aucun message de déplacement. 
ContinueL'opération se poursuit. 
DropL'opération s'arrête avec un déplacement. 

Cette énumération est utilisée par QueryContinueDragEventArgs.

L'exemple suivant illustre une opération 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 suppose que deux fichiers curseur, 3dwarro.cur et 3dwno.cur, existent dans le répertoire de l'application, respectivement pour les curseurs personnalisés d'opération glisser et d'opération sans déplacer. Ces 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 ListBox où se produit l'opération déplacer est également déterminé lors de l'événement DragOver. Si les données à déplacer ne sont pas un String, le DragEventArgs.Effect est défini sur DragDropEffects.None. Enfin, l'état de l'opération déplacer s'affiche 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 illustre l'utilisation de l'énumération DragAction. Consultez la méthode DoDragDrop pour obtenir un exemple de code complet.

private void ListDragSource_QueryContinueDrag(object sender, System.Windows.Forms.QueryContinueDragEventArgs e) {
    // Cancel the drag if the mouse moves off the form.
    ListBox lb = sender as ListBox;

    if (lb != null) {

        Form f = lb.FindForm();

        // Cancel the drag if the mouse moves off the form. The screenOffset
        // takes into account any desktop bands that may be at the top or left
        // side of the screen.
        if (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) ||
            ((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) ||
            ((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) ||
            ((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom)) {

            e.Action = DragAction.Cancel;
        }
    }
}

private void listDragSource_QueryContinueDrag(Object sender, 
    System.Windows.Forms.QueryContinueDragEventArgs e)
{
    // Cancel the drag if the mouse moves off the form.
    ListBox lb = (ListBox)sender;

    if (lb != null) {
        Form f = lb.FindForm();
        // Cancel the drag if the mouse moves off the form. The 
        // screenOffset takes into account any desktop bands 
        // that may be at the top or left side of the screen.
        if (Control.get_MousePosition().get_X() - screenOffset.get_X() 
            < f.get_DesktopBounds().get_Left() 
            || Control.get_MousePosition().get_X() 
            - screenOffset.get_X() > f.get_DesktopBounds().get_Right() 
            || Control.get_MousePosition().get_Y() - screenOffset.get_Y() 
            < f.get_DesktopBounds().get_Top() 
            || Control.get_MousePosition().get_Y() - screenOffset.get_Y() 
            > f.get_DesktopBounds().get_Bottom()) {
            e.set_Action(DragAction.Cancel);
        }
    }
} //listDragSource_QueryContinueDrag

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:
© 2016 Microsoft