QueryContinueDragEventHandler Délégué

Définition

Représente la méthode qui gère l’événement QueryContinueDrag d’un Control.

public delegate void QueryContinueDragEventHandler(System::Object ^ sender, QueryContinueDragEventArgs ^ e);
public delegate void QueryContinueDragEventHandler(object sender, QueryContinueDragEventArgs e);
public delegate void QueryContinueDragEventHandler(object? sender, QueryContinueDragEventArgs e);
type QueryContinueDragEventHandler = delegate of obj * QueryContinueDragEventArgs -> unit
Public Delegate Sub QueryContinueDragEventHandler(sender As Object, e As QueryContinueDragEventArgs)

Paramètres

sender
Object

Source d’un événement.

e
QueryContinueDragEventArgs

Un QueryContinueDragEventArgs qui contient les données d’événement.

Exemples

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

L’exemple montre également l’utilisation de curseurs personnalisés pour l’opération de glisser-déplacer. L’exemple suppose que deux fichiers de curseur, 3dwarro.cur et 3dwno.cur, existent dans le répertoire de l’application, pour les curseurs de glisser-déplacer personnalisés, respectivement. Les curseurs personnalisés sont utilisés si la UseCustomCursorsCheckCheckBox est cochée. 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 pour la ListBoxde droite, pour déterminer ce que l’opération glisser sera basée sur l’état des touches Maj, Ctrl, Alt ou Ctrl+Alt. L’emplacement dans l'ListBox où la suppression se produit est également déterminé pendant l’événement de DragOver. Si les données à supprimer ne sont pas un String, la DragEventArgs.Effect est définie sur DragDropEffects.None. Enfin, l’état de la suppression s’affiche dans la DropLocationLabelLabel.

Les données à supprimer pour la ListBox appropriée sont déterminées dans le gestionnaire d’événements DragDrop et la valeur de String est ajoutée à l’emplacement approprié dans le ListBox. Si l’opération de glissement se déplace en dehors des limites du formulaire, l’opération de glisser-déplacer est annulée dans le gestionnaire d’événements QueryContinueDrag.

Cet extrait de code illustre l’utilisation du délégué QueryContinueDragEventHandler avec l’événement QueryContinueDrag. Consultez la méthode DoDragDrop pour obtenir l’exemple de code complet.

void ListDragSource_QueryContinueDrag( Object^ sender, System::Windows::Forms::QueryContinueDragEventArgs^ e )
{
   // Cancel the drag if the mouse moves off the form.
   ListBox^ lb = dynamic_cast<ListBox^>(sender);
   if ( lb != nullptr )
   {
      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, 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 Sub ListDragSource_QueryContinueDrag(ByVal sender As Object, ByVal e As QueryContinueDragEventArgs) Handles ListDragSource.QueryContinueDrag
    ' Cancel the drag if the mouse moves off the form.
    Dim lb As ListBox = CType(sender, ListBox)

    If (lb IsNot Nothing) Then

        Dim f As Form = 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) Or
            ((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) Or
            ((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) Or
            ((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom)) Then

            e.Action = DragAction.Cancel
        End If
    End If
End Sub

Remarques

Lorsque vous créez un délégué QueryContinueDragEventHandler, vous identifiez la méthode qui gère l’événement. Pour associer l’événement à votre gestionnaire d’événements, ajoutez une instance du délégué à l’événement. Le gestionnaire d’événements est appelé chaque fois que l’événement se produit, sauf si vous supprimez le délégué. Pour plus d’informations sur la gestion des événements avec des délégués, consultez Gestion et déclenchement d’événements.

Méthodes d’extension

GetMethodInfo(Delegate)

Obtient un objet qui représente la méthode représentée par le délégué spécifié.

S’applique à

Voir aussi