Freigeben über


Control.QueryContinueDrag Ereignis

Definition

Tritt während eines Drag-and-Drop-Vorgangs auf und ermöglicht der Ziehquelle zu bestimmen, ob der Drag-and-Drop-Vorgang abgebrochen werden soll.

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 

Ereignistyp

Beispiele

Dieser Codeauszug veranschaulicht die Verwendung des QueryContinueDrag Ereignisses zum Abbrechen des Drag-and-Drop-Vorgangs, wenn der Ziehvorgang außerhalb der Grenzen des Formulars verschoben wird. Sehen Sie sich die DoDragDrop Methode für das vollständige Codebeispiel an.

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

Hinweise

Das QueryContinueDrag Ereignis wird ausgelöst, wenn während eines Drag-and-Drop-Vorgangs eine Änderung des Tastatur- oder Maustastenzustands auftritt. Das QueryContinueDrag Ereignis ermöglicht der Ziehquelle zu bestimmen, ob der Drag-and-Drop-Vorgang abgebrochen werden soll.

Im Folgenden wird beschrieben, wie und wann Ereignisse im Zusammenhang mit Drag-and-Drop-Vorgängen ausgelöst werden.

Die DoDragDrop Methode bestimmt das Steuerelement unter der aktuellen Cursorposition. Anschließend wird überprüft, ob das Steuerelement ein gültiges Drop-Ziel ist.

Wenn das Steuerelement ein gültiges Dropziel ist, wird das GiveFeedback Ereignis mit dem angegebenen Drag-and-Drop-Effekt ausgelöst. Eine Liste der Drag-and-Drop-Effekte finden Sie in der DragDropEffects Enumeration.

Änderungen an der Mauscursorposition, dem Tastaturzustand und dem Maustastenzustand werden nachverfolgt.

  • Wenn der Benutzer aus einem Fenster wechselt, wird das DragLeave Ereignis ausgelöst.

  • Wenn die Maus in ein anderes Steuerelement wechselt, wird das DragEnter Steuerelement ausgelöst.

  • Wenn sich die Maus bewegt, aber innerhalb desselben Steuerelements bleibt, wird das DragOver Ereignis ausgelöst.

Wenn sich der Tastatur- oder Maustastenzustand ändert, wird das QueryContinueDrag Ereignis ausgelöst und bestimmt, ob der Ziehvorgang fortgesetzt, die Daten gelöscht oder der Vorgang basierend auf dem Wert der Action Eigenschaft des Ereignisses QueryContinueDragEventArgsabgebrochen werden soll.

  • Wenn der Wert DragAction lautet Continue, wird das DragOver Ereignis ausgelöst, um den Vorgang fortzusetzen, und das GiveFeedback Ereignis wird mit dem neuen Effekt ausgelöst, sodass entsprechende visuelles Feedback festgelegt werden kann. Eine Liste der gültigen Dropeffekte finden Sie in der DragDropEffects Enumeration.

    Hinweis

    Die DragOver Ereignisse GiveFeedback und Ereignisse werden gekoppelt, sodass der Benutzer während der Mauseingabe über das Drop-Ziel das meiste up-to-Datumsfeedback an der Position der Maus erhält.

  • Wenn der Wert des Werts DragAction lautet Drop, wird der Wert des Ablageeffekts an die Quelle zurückgegeben, sodass die Quellanwendung den entsprechenden Vorgang für die Quelldaten ausführen kann, z. B. die Daten ausschneiden, wenn der Vorgang eine Verschiebung war.

  • Wenn der Wert DragAction lautet Cancel, wird das DragLeave Ereignis ausgelöst.

Standardmäßig legt das QueryContinueDrag Ereignis fest DragActionCancel, ob die ESC-Taste gedrückt wurde, und legt Action sie fest, DragActionDrop wenn die linke, mittlere oder rechte Maustaste gedrückt Action wird.

Weitere Informationen zur Behandlung von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.

Gilt für:

Weitere Informationen