Control.GiveFeedback Ereignis

Definition

Tritt während eines Ziehvorgangs ein.

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

Ereignistyp

Beispiele

Im folgenden Codebeispiel wird ein Drag-and-Drop-Vorgang zwischen zwei ListBox Steuerelementen veranschaulicht. Im Beispiel wird die DoDragDrop -Methode aufgerufen, wenn die Ziehaktion gestartet wird. Die Ziehaktion wird gestartet, wenn sich die Maus während MouseDown des Ereignisses mehr als SystemInformation.DragSize von der Mausposition bewegt hat. Die IndexFromPoint -Methode wird verwendet, um den Index des Elements zu bestimmen, das während des Ereignisses MouseDown gezogen werden soll.

Das Beispiel veranschaulicht auch die Verwendung benutzerdefinierter Cursor für den Drag-and-Drop-Vorgang. Das Beispiel erfordert, 3dwarro.cur dass zwei Cursordateien und 3dwno.curim Anwendungsverzeichnis für die benutzerdefinierten Drag- und No-Drop-Cursor vorhanden sind. Die benutzerdefinierten Cursor werden verwendet, wenn der UseCustomCursorsCheckCheckBox aktiviert ist. Die benutzerdefinierten Cursor werden im GiveFeedback Ereignishandler festgelegt.

Der Tastaturzustand wird im Ereignishandler für die DragOver richtige ListBoxausgewertet, um zu bestimmen, welcher Ziehvorgang basierend auf dem Zustand der UMSCHALT-, STRG-, ALT- oder STRG+ALT-TASTEN erfolgt. Der Speicherort in dem, an dem ListBox der Abbruch erfolgen würde, wird auch während des Ereignisses DragOver bestimmt. Wenn es sich bei den zu löschenden Daten nicht um einen Stringhandelt, ist in auf DragEventArgs.EffectNoneDragDropEffectsfestgelegt. Schließlich wird der status des Drops in DropLocationLabelLabelangezeigt.

Die Daten, die für die Rechte ListBox gelöscht werden sollen, werden im DragDrop Ereignishandler bestimmt, und der String Wert wird an der entsprechenden Stelle in hinzugefügt ListBox. Wenn sich der Ziehvorgang außerhalb der Grenzen des Formulars bewegt, wird der Drag-and-Drop-Vorgang im QueryContinueDrag Ereignishandler abgebrochen.

In diesem Codeausschnitt wird die Verwendung des -Ereignisses GiveFeedback veranschaulicht. Das vollständige Codebeispiel finden Sie in der DoDragDrop -Methode.

void ListDragSource_GiveFeedback( Object^ /*sender*/, System::Windows::Forms::GiveFeedbackEventArgs^ e )
{
   // Use custom cursors if the check box is checked.
   if ( UseCustomCursorsCheck->Checked )
   {
      // Sets the custom cursor based upon the effect.
      e->UseDefaultCursors = false;
      if ( (e->Effect & DragDropEffects::Move) == DragDropEffects::Move )
                  ::Cursor::Current = MyNormalCursor;
      else
                  ::Cursor::Current = MyNoDropCursor;
   }
}
private void ListDragSource_GiveFeedback(object sender, GiveFeedbackEventArgs e)
{
    // Use custom cursors if the check box is checked.
    if (UseCustomCursorsCheck.Checked)
    {
        // Sets the custom cursor based upon the effect.
        e.UseDefaultCursors = false;
        if ((e.Effect & DragDropEffects.Move) == DragDropEffects.Move)
            Cursor.Current = MyNormalCursor;
        else
            Cursor.Current = MyNoDropCursor;
    }
}
Private Sub ListDragSource_GiveFeedback(ByVal sender As Object, ByVal e As GiveFeedbackEventArgs) Handles ListDragSource.GiveFeedback
    ' Use custom cursors if the check box is checked.
    If (UseCustomCursorsCheck.Checked) Then

        ' Set the custom cursor based upon the effect.
        e.UseDefaultCursors = False
        If ((e.Effect And DragDropEffects.Move) = DragDropEffects.Move) Then
            Cursor.Current = MyNormalCursor
        Else
            Cursor.Current = MyNoDropCursor
        End If
    End If

End Sub

Hinweise

Das GiveFeedback Ereignis wird ausgelöst, wenn ein Drag-and-Drop-Vorgang gestartet wird. Mit dem GiveFeedback Ereignis kann die Quelle eines Drag-Ereignisses die Darstellung des Mauszeigers ändern, um dem Benutzer während eines Drag-and-Drop-Vorgangs visuelles Feedback zu geben.

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.

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

Gilt für:

Weitere Informationen