Control.DragEnter Ereignis

Definition

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 UseCustomCursorsCheckCheckBox aktiviert ist. Die benutzerdefinierten Cursor werden im GiveFeedback Ereignishandler festgelegt.

Der Tastaturzustand wird im DragOver Ereignishandler für die richtige ListBoxausgewertet, 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 Stringsind, wird die DragEventArgs.Effect in DragDropEffectsauf None festgelegt. Schließlich wird der Status des Drops im DropLocationLabelLabelangezeigt.

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 ListBoxhinzugefü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 DragActionContinueist, 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 DragActionDropist, 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 DragActionCancelist, 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.

Gilt für:

Weitere Informationen