Control.DragEnter Ereignis

Definition

Tritt ein, wenn ein Objekt in die Begrenzungen 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 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. Für das Beispiel müssen zwei Cursordateien ( 3dwarro.cur und 3dwno.cur) im Anwendungsverzeichnis für die benutzerdefinierten Cursor drag bzw. no drop vorhanden sein. 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 rechte ListBoxausgewertet, um den Ziehvorgang basierend auf dem Zustand der TASTEN UMSCHALT, STRG, ALT oder STRG+ALT zu bestimmen. Die Position in der, an der ListBox der Abbruch erfolgen würde, wird auch während des Ereignisses DragOver bestimmt. Wenn die zu löschenden Daten keine Stringsind, DragEventArgs.Effect wird in DragDropEffectsauf None festgelegt. Schließlich wird die status des Drops im DropLocationLabelLabelangezeigt.

Die für die rechte ListBox Seite 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 -Ereignisses DragEnter . DoDragDrop Das vollständige Codebeispiel finden Sie in der -Methode.

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 zum ersten Mal über das Steuerelement zieht.

Hinweis

Wenn Sie in Früheren Versionen als .NET Framework 2.0 ein UserControl with- und DragDrop -Ereignis auf ein Windows Form-Element setzen und etwas UserControl zur Entwurfszeit ziehen und ablegen, werden die DropDrop Ereignisse und DropEnter ausgelöst.DragEnter Wenn Sie die Lösung schließen und erneut öffnen, werden die DragEnter Ereignisse und DragDrop nicht erneut ausgelöst.

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 abgebrochen werden soll, basierend auf dem Wert der Action -Eigenschaft des Ereignisses QueryContinueDragEventArgs.

  • 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 ein entsprechendes visuelles Feedback festgelegt werden kann. Eine Liste der gültigen Ablageeffekte finden Sie unter der DragDropEffects-Enumeration.

    Hinweis

    Die DragOver Ereignisse und GiveFeedback werden so gekoppelt, dass der Benutzer während der Mausbewegung über das Drop-Ziel das aktuellste Feedback zur Mausposition erhält.

  • Wenn der Wert von istDrop, wird der Wert für DragAction den Löscheffekt 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 verschoben wurde.

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

    Hinweis

    Die X Eigenschaften und Y von DragEventArgs befinden sich in Bildschirmkoordinaten, nicht in Clientkoordinaten. Die folgende Zeile von Visual C#-Code konvertiert die Eigenschaften in einen Client Point.

    Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));
    

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

Gilt für:

Weitere Informationen