QueryContinueDragEventHandler Delegált

Definíció

Azt a metódust jelöli, amely egy QueryContinueDrag .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éterek

sender
Object

Az esemény forrása.

e
QueryContinueDragEventArgs

Az QueryContinueDragEventArgs eseményadatokat tartalmazó A.

Példák

Az alábbi példa két vezérlő közötti ListBox húzási műveletet mutat be. A példa meghívja a metódust az DoDragDrop húzási művelet indításakor. A húzási művelet akkor indul el, ha az egér az esemény során több helyről mozdult el, mint SystemInformation.DragSize az MouseDown egér helyére. A IndexFromPoint metódus az esemény során MouseDown húzandó elem indexének meghatározására szolgál.

A példa azt is bemutatja, hogy egyéni kurzorokat használ a húzási művelethez. A példa feltételezi, 3dwarro.cur hogy két kurzorfájl, és 3dwno.curaz alkalmazáskönyvtárban található, az egyéni húzási és a kurzor nélküli kurzorok esetében. A program az egyéni kurzorokat fogja használni, ha a UseCustomCursorsCheckCheckBox kurzort bejelölte. Az egyéni kurzorok az GiveFeedback eseménykezelőben vannak beállítva.

A billentyűzet állapotának kiértékelése a DragOver jobb oldali ListBoxeseménykezelőben történik annak meghatározásához, hogy a húzási művelet a SHIFT, a CTRL, az ALT vagy a CTRL+ALT billentyűk állapotán alapuljon. Az esemény során ListBox annak a helynek a DragOver helyét is meghatározza, ahol az esés bekövetkezne. Ha az elejtendő adatok nem egy String, akkor az DragEventArgs.Effect érték a következőre DragDropEffects.Nonevan állítva: . Végül az elvetés állapota megjelenik a DropLocationLabelLabel.

A jobb oldali ListBox ledobandó adatokat az DragDrop eseménykezelő határozza meg, és az String érték a megfelelő helyen lesz hozzáadva a ListBox. Ha az húzási művelet az űrlap határain kívülre kerül, az húzási művelet megszakad az QueryContinueDrag eseménykezelőben.

Ez a kódrészlet bemutatja, hogy a meghatalmazottat használja QueryContinueDragEventHandler az QueryContinueDrag eseményhez. Tekintse meg a DoDragDrop teljes kód példájának metódusát.

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

Megjegyzések

Meghatalmazott létrehozásakor QueryContinueDragEventHandler azonosítja az eseményt kezelő metódust. Az esemény eseménykezelőhöz való társításához adja hozzá a meghatalmazott egy példányát az eseményhez. Az eseménykezelőt mindig meghívja a rendszer, ha nem távolítja el a meghatalmazottat. Az események meghatalmazottakkal való kezeléséről további információt az Események kezelése és emelése című témakörben talál.

Bővítő metódusok

Name Description
GetMethodInfo(Delegate)

Lekéri a megadott meghatalmazott által képviselt metódust képviselő objektumot.

A következőre érvényes:

Lásd még