Control.DragEnter 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 auf, wenn ein Objekt in die Grenzen des Steuerelements gezogen wird.
public:
event System::Windows::Forms::DragEventHandler ^ DragEnter;
public event System.Windows.Forms.DragEventHandler DragEnter;
public event System.Windows.Forms.DragEventHandler? DragEnter;
member this.DragEnter : System.Windows.Forms.DragEventHandler
Public Custom Event DragEnter As DragEventHandler
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 DragEnter-Ereignisses. Die DoDragDrop-Methode finden Sie im vollständigen Codebeispiel.
void ListDragTarget_DragEnter( Object^ /*sender*/, System::Windows::Forms::DragEventArgs^ /*e*/ )
{
// Reset the label text.
DropLocationLabel->Text = "None";
}
private void ListDragTarget_DragEnter(object sender, DragEventArgs e)
{
// Reset the label text.
DropLocationLabel.Text = "None";
}
Private Sub ListDragTarget_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles ListDragTarget.DragEnter
' Reset the label text.
DropLocationLabel.Text = "None"
End Sub
Hinweise
Das DragEnter-Ereignis wird ausgelöst, wenn der Benutzer den Mauszeiger während eines Drag-and-Drop-Vorgangs zuerst über das Steuerelement zieht.
Anmerkung
Wenn Sie in Versionen vor .NET Framework 2.0 ein UserControl mit DragEnter- und DragDrop Ereignissen in einem Windows Form-Formular ablegen und etwas zur Entwurfszeit auf das UserControl ziehen und ablegen, werden die ereignisse DropDrop
und DropEnter
ausgelöst. Wenn Sie die Lösung jedoch schließen und erneut öffnen, werden die ereignisse DragEnter und DragDrop nicht erneut ausgelöst.
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.Anmerkung
Die eigenschaften X und Y der DragEventArgs befinden sich in Bildschirmkoordinaten, nicht in Clientkoordinaten. In der folgenden Zeile von Visual C#-Code werden die Eigenschaften in einen Client Pointkonvertiert.
Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));
Weitere Informationen zum Behandeln von Ereignissen finden Sie unter Behandeln und Auslösen von Ereignissen.