Control.QueryContinueDrag Gebeurtenis

Definitie

Vindt plaats tijdens een slepen-en-neerzetten-bewerking en stelt de slepenbron in staat om te bepalen of de bewerking slepen en neerzetten moet worden geannuleerd.

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 

Gebeurtenistype

Voorbeelden

Dit codefragment laat zien hoe u de QueryContinueDrag gebeurtenis gebruikt om de bewerking slepen en neerzetten te annuleren als de sleepbewerking buiten de grenzen van het formulier wordt verplaatst. Zie de DoDragDrop methode voor het volledige codevoorbeeld.

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

Opmerkingen

De QueryContinueDrag gebeurtenis treedt op wanneer er een wijziging is in de status van het toetsenbord of de muisknop tijdens een bewerking met slepen en neerzetten. Met QueryContinueDrag de gebeurtenis kan de slepenbron bepalen of de bewerking slepen en neerzetten moet worden geannuleerd.

Hieronder wordt beschreven hoe en wanneer gebeurtenissen met betrekking tot slepen-en-neerzetten-bewerkingen worden gegenereerd.

De DoDragDrop methode bepaalt het besturingselement onder de huidige cursorlocatie. Vervolgens wordt gecontroleerd of het besturingselement een geldig neervaldoel is.

Als het besturingselement een geldig neervaldoel is, wordt de GiveFeedback gebeurtenis gegenereerd met het opgegeven effect slepen en neerzetten. Zie de DragDropEffects opsomming voor een lijst met effecten voor slepen en neerzetten.

Wijzigingen in de positie van de muiscursor, de toetsenbordstatus en de status van de muisknop worden bijgehouden.

  • Als de gebruiker uit een venster wordt verplaatst, wordt de DragLeave gebeurtenis gegenereerd.

  • Als de muis een ander besturingselement binnenkomt, wordt het DragEnter voor dat besturingselement verhoogd.

  • Als de muis beweegt maar binnen hetzelfde besturingselement blijft, wordt de DragOver gebeurtenis gegenereerd.

Als er een wijziging in de status van de toetsenbord- of muisknop is, wordt de QueryContinueDrag gebeurtenis gegenereerd en wordt bepaald of de slepen moet worden voortgezet, de gegevens moeten worden verwijderd of als u de bewerking wilt annuleren op basis van de waarde van de eigenschap van de Action gebeurtenis QueryContinueDragEventArgs.

  • Als de waarde DragAction is Continue, wordt de DragOver gebeurtenis gegenereerd om door te gaan met de bewerking en wordt de GiveFeedback gebeurtenis gegenereerd met het nieuwe effect, zodat de juiste visuele feedback kan worden ingesteld. Zie de DragDropEffects opsomming voor een lijst met geldige drop-effecten.

    Note

    De DragOver gebeurtenissen en GiveFeedback gebeurtenissen worden gekoppeld, zodat wanneer de muis over het neervallende doel beweegt, de gebruiker de meeste up-to-datumfeedback over de positie van de muis krijgt.

  • Als de waarde DragAction is Drop, wordt de waarde van het neerzeteffect geretourneerd naar de bron, zodat de brontoepassing de juiste bewerking op de brongegevens kan uitvoeren, bijvoorbeeld de gegevens knippen als de bewerking een verplaatsing was.

  • Als de waarde DragAction is Cancel, wordt de DragLeave gebeurtenis gegenereerd.

Standaard wordt de QueryContinueDrag gebeurtenis ingesteld ActionCancel op in DragAction als de ESC-toets is ingedrukt en wordt ingesteld ActionDrop op in DragAction als de linker-, middelste of rechtermuisknop wordt ingedrukt.

Zie Gebeurtenissen verwerken en genereren voor meer informatie over het afhandelen van gebeurtenissen.

Van toepassing op

Zie ook