Teilen über


Control.QueryContinueDrag Ereignis

Definition

Tritt während eines Drag & Drop-Vorgangs ein. Dadurch kann die Quelle des Ziehvorgangs bestimmen, ob der Drag & 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

In diesem Codeausschnitt wird veranschaulicht, wie sie das QueryContinueDrag -Ereignis verwenden, um den Drag-and-Drop-Vorgang abzubrechen, wenn sich der Ziehvorgang außerhalb der Grenzen des Formulars bewegt. Das vollständige Codebeispiel finden Sie in der DoDragDrop -Methode.

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 sich der Tastatur- oder Maustastenzustand während eines Drag-and-Drop-Vorgangs ändert. Mit QueryContinueDrag dem Ereignis kann die Ziehquelle bestimmen, ob der Drag-and-Drop-Vorgang abgebrochen werden soll.

Nachfolgend wird beschrieben, wie und wann Ereignisse für Drag & Drop-Vorgänge ausgelöst werden.

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

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

Änderungen der Mauszeigerposition, des Tastaturzustands und des Zustands der Maustasten werden verfolgt.

  • Wenn die Benutzeraktion das Fenster verlässt, wird das DragLeave-Ereignis ausgelöst.

  • Wenn der Mauszeiger in ein anderes Steuerelement bewegt wird, wird das DragEnter-Ereignis für dieses Steuerelement ausgelöst.

  • Wenn die Maus bewegt wird, ohne das Steuerelement zu verlassen, 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 von DragAction ist Continue, wird das DragOver Ereignis ausgelöst, um den Vorgang fortzusetzen, und das GiveFeedback Ereignis wird mit dem neuen Effekt ausgelöst, sodass geeignetes visuelles Feedback festgelegt werden kann. Eine Liste der gültigen Ablageeffekte finden Sie unter der DragDropEffects-Enumeration.

    Hinweis

    Die DragOver Ereignisse und GiveFeedback werden gekoppelt, sodass der Benutzer während der Mausbewegung über das Ablageziel das aktuellste Feedback zur Mausposition erhält.

  • Wenn der Wert von istDrop, wird der Wert des DragAction Löscheffekts an die Quelle zurückgegeben, sodass die Quellanwendung den entsprechenden Vorgang für die Quelldaten ausführen kann. Beispielsweise schneiden Sie die Daten aus, wenn der Vorgang eine Verschiebung war.

  • Wenn der Wert von DragAction ist Cancel, wird das DragLeave -Ereignis ausgelöst.

Standardmäßig wird das QueryContinueDrag Ereignis auf Cancel in DragAction festgelegtAction, wenn die ESC-Taste gedrückt wurde, und legt auf ein DragAction fest ActionDrop, wenn die linke, mittlere oder rechte Maustaste gedrückt wird.

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

Gilt für:

Weitere Informationen