Control.GiveFeedback Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt während eines Ziehvorgangs auf.
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 beginnt, wenn die Maus während des MouseDown Ereignisses mehr als SystemInformation.DragSize von der Mausposition verschoben hat. Die IndexFromPoint-Methode wird verwendet, um den Index des Elements zu bestimmen, das während des MouseDown
-Ereignisses gezogen werden soll.
Das Beispiel veranschaulicht auch die Verwendung von benutzerdefinierten Cursorn für den Drag-and-Drop-Vorgang. Das Beispiel erfordert, dass zwei Cursordateien, 3dwarro.cur
und 3dwno.cur
, im Anwendungsverzeichnis vorhanden sind, für die benutzerdefinierten Mauszeiger bzw. Cursor ohne Drop. Die benutzerdefinierten Cursor werden verwendet, wenn die UseCustomCursorsCheck
CheckBox aktiviert ist. Die benutzerdefinierten Cursor werden im GiveFeedback Ereignishandler festgelegt.
Der Tastaturzustand wird im DragOver Ereignishandler für die richtige ListBox
ausgewertet, um zu bestimmen, was der Ziehvorgang auf dem Zustand der UMSCHALTTASTE, STRG, ALT oder STRG+ALT basiert. Die Position in der ListBox
, an der der Abbruch erfolgen würde, wird auch während des DragOver
-Ereignisses bestimmt. Wenn die zu löschenden Daten kein String
sind, wird die DragEventArgs.Effect in DragDropEffectsauf None
festgelegt. Schließlich wird der Status des Drops im DropLocationLabel
Labelangezeigt.
Die für den richtigen ListBox
zu löschenden Daten werden im DragDrop-Ereignishandler bestimmt, und der String
Wert wird an der entsprechenden Stelle im ListBox
hinzugefügt. Wenn der Ziehvorgang außerhalb der Grenzen des Formulars verschoben wird, wird der Drag-and-Drop-Vorgang im QueryContinueDrag-Ereignishandler abgebrochen.
Dieser Codeauszug veranschaulicht die Verwendung des GiveFeedback-Ereignisses. Die DoDragDrop-Methode finden Sie im vollständigen Codebeispiel.
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.
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 es sich bei dem Steuerelement um ein gültiges Dropziel handelt, 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 die DragEnter für dieses 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 QueryContinueDragEventArgsereignisses abgebrochen werden soll.
Wenn der Wert von DragAction
Continue
ist, 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.Anmerkung
Die ereignisse DragOver und GiveFeedback werden gekoppelt, sodass der Benutzer beim Bewegen der Maus über das Drop-Ziel das up-to-datumsfeedback an der Position der Maus erhält.
Wenn der Wert von DragAction
Drop
ist, wird der Wert des Drop-Effekts an die Quelle zurückgegeben, damit die Quellanwendung den entsprechenden Vorgang für die Quelldaten ausführen kann; Schneiden Sie beispielsweise die Daten aus, wenn der Vorgang eine Verschiebung war.Wenn der Wert von DragAction
Cancel
ist, wird das DragLeave-Ereignis ausgelöst.
Weitere Informationen zum Behandeln von Ereignissen finden Sie unter Behandeln und Auslösen von Ereignissen.