Control.QueryContinueDrag Esemény

Definíció

A húzási művelet során történik, és lehetővé teszi a húzási forrás számára annak megállapítását, hogy a húzási műveletet le kell-e mondani.

public:
 event System::Windows::Forms::QueryContinueDragEventHandler ^ QueryContinueDrag;
public event System.Windows.Forms.QueryContinueDragEventHandler QueryContinueDrag;
public event System.Windows.Forms.QueryContinueDragEventHandler? QueryContinueDrag;
member this.QueryContinueDrag : System.Windows.Forms.QueryContinueDragEventHandler 
Public Custom Event QueryContinueDrag As QueryContinueDragEventHandler 

Eseménytípus

Példák

Ez a kódrészlet bemutatja, hogy az QueryContinueDrag esemény használatával megszakítja a húzási műveletet, ha a húzási művelet az űrlap határain kívülre kerül. 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

Az QueryContinueDrag esemény akkor jön létre, ha egy húzással végzett művelet során megváltozik a billentyűzet vagy az egérgomb állapota. Az QueryContinueDrag esemény lehetővé teszi a húzási forrás számára annak megállapítását, hogy a húzási műveletet le kell-e mondani.

Az alábbiakban azt ismertetjük, hogy a húzással és húzással kapcsolatos események hogyan és mikor lépnek fel.

A DoDragDrop metódus az aktuális kurzor helye alatti vezérlőt határozza meg. Ezután ellenőrzi, hogy a vezérlő érvényes dobási cél-e.

Ha a vezérlő érvényes dobási cél, az GiveFeedback eseményt a megadott húzási effektussal emeli ki. A húzási effektusok listáját az DragDropEffects enumerálásban találja.

A rendszer nyomon követi az egérmutató pozíciójának, a billentyűzet állapotának és az egérgomb állapotának változásait.

  • Ha a felhasználó kilép egy ablakból, az DragLeave esemény létrejön.

  • Ha az egér egy másik vezérlőt ad meg, az DragEnter adott vezérlő neve fel lesz emelve.

  • Ha az egér mozog, de ugyanabban a vezérlőben marad, az DragOver esemény fel lesz emelve.

Ha a billentyűzet vagy az egérgomb állapota megváltozik, a rendszer elindítja az QueryContinueDrag eseményt, és meghatározza, hogy folytatja-e a húzást, elveti-e az adatokat, vagy megszakítja-e a műveletet az Action esemény QueryContinueDragEventArgstulajdonságának értéke alapján.

  • Ha az érték DragAction az, az Continue esemény a művelet folytatásához lesz emelve, és az DragOver eseményt az új effektussal emeli ki, így megfelelő vizuális GiveFeedbackvisszajelzés állítható be. Az érvényes effektusok listáját az DragDropEffects enumerálásban találja.

    Note

    Az DragOver és GiveFeedback az események párosítása úgy történik, hogy az egér a dobási célon áthaladva a lehető legtöbb up-to-date visszajelzést kapjon az egér pozíciójáról.

  • Ha az érték DragAction az Drop, akkor a drop effect értéke vissza lesz adva a forrásnak, így a forrásalkalmazás végrehajthatja a megfelelő műveletet a forrásadatokon, például kivághatja az adatokat, ha a művelet áthelyezés volt.

  • Ha az érték DragAction az Cancel, az DragLeave esemény fel lesz emelve.

Alapértelmezés szerint az QueryContinueDrag esemény be van kapcsolva ActionCancelDragAction, ha az ESC billentyűt lenyomták, és be van kapcsolva ActionDropDragAction, ha a bal, középső vagy jobb egérgombot lenyomja.

Az események kezelésével kapcsolatos további információkért lásd : Események kezelése és emelése.

A következőre érvényes:

Lásd még