Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Control.QueryContinueDrag événement

 

Date de publication : novembre 2016

Se produit pendant une opération glisser-déplacer et permet à la source de cette opération de déterminer si l'opération doit être annulée.

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

public event QueryContinueDragEventHandler QueryContinueDrag

Le QueryContinueDrag événement est déclenché lorsqu'une modification est dans l'état du bouton de clavier ou de la souris pendant une opération de glisser-déplacer. Le QueryContinueDrag événement permet à la source de glissement de déterminer si l'opération de glisser-déplacer doit être annulée.

Les lignes suivantes décrivent de quelle façon et à quel moment se déclenchent les événements liés aux opérations de glisser-déplacer.

Le DoDragDrop méthode détermine le contrôle sous l’emplacement du curseur. Il vérifie ensuite si le contrôle est une cible de déplacement valide.

Si le contrôle est une cible de déplacement valide, le GiveFeedback événement est déclenché avec l’effet de glisser-déplacer spécifié. Pour obtenir la liste des effets de glisser-déplacer, consultez l'énumération DragDropEffects.

Les modifications apportées à la position du curseur de la souris, à l'état du clavier et à l'état du bouton de la souris font l'objet d'un suivi.

  • Si l'utilisateur se déplace hors de la fenêtre, l'événement DragLeave est déclenché.

  • Si la souris entre dans un autre contrôle, l'événement DragEnter du contrôle est déclenché.

  • Si la souris se déplace uniquement dans les limites du même contrôle, l'événement DragOver est déclenché.

S’il existe une modification de l’état du bouton de souris ou le clavier, leQueryContinueDrag événement est déclenché et détermine s’il faut continuer l’opération glisser, déplacer les données ou annuler l’opération en fonction de la valeur de la Action propriété de l’événement QueryContinueDragEventArgs.

  • Si la valeur de DragAction est Continue, le DragOver événement est déclenché pour poursuivre l’opération et le GiveFeedback événement est déclenché avec le nouvel effet, pour rétroaction visuelle appropriée. Pour obtenir la liste des effets de déplacement valides, consultez l'énumération DragDropEffects.

    System_CAPS_noteRemarque

    Le DragOver et GiveFeedback les événements sont associés de sorte que lorsque la souris se trouve sur la cible de déplacement, l’utilisateur reçoit les commentaires les plus actuels sur la position de la souris.

  • Si la valeur de DragAction est Drop, la valeur d’effet de déplacement est retournée à la source, donc l’application source peut effectuer l’opération appropriée sur les données sources ; par exemple, couper les données si l’opération était un déplacement.

  • Si la valeur de DragAction est Cancel, le DragLeave événement est déclenché.

Par défaut, le QueryContinueDrag événement ensembles Action à Cancel dans DragAction Si la touche ÉCHAP a été enfoncée et affecte Action à Drop dans DragAction Si le bouton gauche, du milieu ou de droite de la souris est enfoncé.

Pour plus d’informations sur la gestion des événements, consultez la page gestion et déclenchement d’événements.

L’exemple de code suivant illustre une opération de glisser-déplacer entre deux ListBox contrôles. L’exemple appelle la DoDragDrop méthode lorsque l’action glisser commence. L’action glisser démarre si la souris a été déplacé plus de SystemInformation.DragSize à partir de l’emplacement de la souris pendant la MouseDown événement. Le IndexFromPoint méthode est utilisée pour déterminer l’index de l’élément à faire glisser pendant la MouseDown événement.

L’exemple illustre également l’utilisation des 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 pour le glisser-déplacer personnalisés-déplacer et les curseurs, respectivement. Les curseurs personnalisés sont utilisés si les UseCustomCursorsCheckCheckBox est activée. Les curseurs personnalisés sont définis dans le GiveFeedback Gestionnaire d’événements.

L’état du clavier est évalué dans le DragOver Gestionnaire d’événements pour le droit ListBox, afin de déterminer l’opération glisser en fonction de l’état des touches MAJ, CTRL, ALT ou CTRL + ALT. L’emplacement dans la ListBox où la suppression peut avoir lieu est également déterminé lors de la DragOver événement. Si les données à déplacer ne sont pas un String, le DragEventArgs.Effect est définie sur None dans DragDropEffects. Enfin, l’état de la liste déroulante s’affiche dans le DropLocationLabelLabel.

Les données à déplacer pour le droit ListBox est déterminé dans le DragDrop Gestionnaire d’événements et les String valeur est ajoutée à l’emplacement approprié dans le ListBox. Si l’opération glisser va au-delà des limites du formulaire, alors que l’opération de glisser-déplacer est annulée dans le QueryContinueDrag Gestionnaire d’événements.

Cet extrait de code illustre l’utilisation de la QueryContinueDrag événement. Consultez le DoDragDrop méthode pour l’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;
        }
    }
}

.NET Framework
Disponible depuis 1.1
Retour au début
Afficher: