Exemplarische Vorgehensweise: Ausführen von Drag & Drop-Vorgängen in Windows FormsWalkthrough: Performing a Drag-and-Drop Operation in Windows Forms

Drag & Drop-Operationen in Windows-basierten Anwendungen müssen Sie insbesondere eine Reihe von Ereignissen, behandeln die DragEnter, DragLeave, und DragDrop Ereignisse.To perform drag-and-drop operations within Windows-based applications you must handle a series of events, most notably the DragEnter, DragLeave, and DragDrop events. Wenn Sie die Daten aus den Ereignisargumenten dieser Ereignisse verwenden, können Sie Drag & Drop-Vorgänge problemlos vereinfachen.By working with the information available in the event arguments of these events, you can easily facilitate drag-and-drop operations.

Ziehen von DatenDragging Data

Drag & Drop-Vorgänge beginnen immer mit dem Ziehen (Dragging).All drag-and-drop operations begin with dragging. Die Funktionalität zum Aktivieren der Daten erfasst werden, bei Beginn des Ziehvorgangs wird implementiert, der DoDragDrop Methode.The functionality to enable data to be collected when dragging begins is implemented in the DoDragDrop method.

Im folgenden Beispiel die MouseDown Ereignis wird verwendet, um den Ziehvorgang gestartet werden, da es die intuitivste ist (die meisten Drag-and-Drop-Aktionen beginnen mit der Maustaste gedrückt wird).In the following example, the MouseDown event is used to start the drag operation because it is the most intuitive (most drag-and-drop actions begin with the mouse button being depressed). Beachten Sie dabei jedoch, dass für das Starten des Drag & Drop-Vorgangs jedes beliebige Ereignis verwendet werden kann.However, remember that any event could be used to initiate a drag-and-drop procedure.

Hinweis

Bestimmte Steuerelemente verfügen über benutzerdefinierte für Ziehvorgänge spezifische Ereignisse.Certain controls have custom drag-specific events. Die ListView und TreeView haben Sie Steuerelemente, z. B. ein ItemDrag Ereignis.The ListView and TreeView controls, for example, have an ItemDrag event.

So starten Sie einen ZielvorgangTo start a drag operation

  1. In der MouseDown -Ereignis für das Steuerelement, in dem der Ziehvorgang beginnt, verwenden die DoDragDrop Methode, um die Daten zu ziehende festgelegt und der zulässigen Effekt darstellt, das gezogen haben.In the MouseDown event for the control where the drag will begin, use the DoDragDrop method to set the data to be dragged and the allowed effect dragging will have. Weitere Informationen finden Sie unter Data und AllowedEffect.For more information, see Data and AllowedEffect.

    Im folgenden Beispiel wird gezeigt, wie ein Ziehvorgang gestartet wird.The following example shows how to initiate a drag operation. Ist das Steuerelement, an der der Ziehvorgang beginnt, ein Button -Steuerelement, die gezogenen Daten ist die Zeichenfolge darstellt. die Text Eigenschaft von der Button -Steuerelement, und die zulässigen Auswirkungen entweder kopieren oder verschieben.The control where the drag begins is a Button control, the data being dragged is the string representing the Text property of the Button control, and the allowed effects are either copying or moving.

    Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown  
       Button1.DoDragDrop(Button1.Text, DragDropEffects.Copy Or DragDropEffects.Move)  
    End Sub  
    
    private void button1_MouseDown(object sender,   
    System.Windows.Forms.MouseEventArgs e)  
    {  
       button1.DoDragDrop(button1.Text, DragDropEffects.Copy |   
          DragDropEffects.Move);  
    }  
    

    Hinweis

    Alle Daten verwendet werden können, als Parameter in der DoDragDrop Methode; im Beispiel oben, die Text Eigenschaft der Button Steuerelement wurde (anstatt einen Wert fest zu codieren, oder Abrufen von Daten aus einem Dataset) verwendet, da die Eigenschaft in Verbindung wurde der Speicherort von gezogenen (die Button Steuerelement).Any data can be used as a parameter in the DoDragDrop method; in the example above, the Text property of the Button control was used (rather than hard-coding a value or retrieving data from a dataset) because the property was related to the location being dragged from (the Button control). Dies sollte bei der Integration von Drag & Drop-Vorgängen in Windows-basierte Anwendungen stets beachtet werden.Keep this in mind as you incorporate drag-and-drop operations into your Windows-based applications.

Während ein Ziehvorgangs aktiviert ist, können Sie behandeln die QueryContinueDrag Ereignis, das "Berechtigung fordert" des Systems, der Ziehvorgang fortgesetzt.While a drag operation is in effect, you can handle the QueryContinueDrag event, which "asks permission" of the system to continue the drag operation. Bei der Behandlung von dieser Methode wird auch der entsprechenden Stelle Sie Methoden aufrufen, die Auswirkungen auf die Ziehvorgangs wird, beispielsweise bei der Erweiterung wird eine TreeNode in einem TreeView steuern, wenn der Cursor darüber bewegt wird.When handling this method, it is also the appropriate point for you to call methods that will have an effect on the drag operation, such as expanding a TreeNode in a TreeView control when the cursor hovers over it.

Ablegen von DatenDropping Data

Nachdem Sie begonnen haben, Daten von einer Stelle einer Windows Form oder eines Steuerelements zu ziehen, möchten Sie diese natürlich auch irgendwo ablegen (Dropping).Once you have begun dragging data from a location on a Windows Form or control, you will naturally want to drop it somewhere. Der Cursor verändert sich, wenn er über einen Bereich auf einem Formular oder Steuerelement bewegt wird, der für das Ablegen von Daten konfiguriert ist.The cursor will change when it crosses an area of a form or control that is correctly configured for dropping data. Ein Bereich innerhalb eines Windows-Formulars oder Steuerelements kann erfolgen, damit akzeptieren abgelegte Daten durch Festlegen der AllowDrop -Eigenschaft und die Behandlung der DragEnter und DragDrop Ereignisse.Any area within a Windows Form or control can be made to accept dropped data by setting the AllowDrop property and handling the DragEnter and DragDrop events.

So führen Sie einen Ablegevorgang ausTo perform a drop

  1. Legen Sie die AllowDrop Eigenschaft auf "true".Set the AllowDrop property to true.

  2. In der DragEnter -Ereignis für das Steuerelement, auf denen die Drop erfolgt, stellen Sie sicher, dass die gezogenen Daten einen zulässigen Typ ist (in diesem Fall Text).In the DragEnter event for the control where the drop will occur, ensure that the data being dragged is of an acceptable type (in this case, Text). Der Code legt dann die Auswirkungen, die bei einem Wert in die Dropdownliste geschieht die DragDropEffects Enumeration.The code then sets the effect that will happen when the drop occurs to a value in the DragDropEffects enumeration. Weitere Informationen finden Sie unter Effect.For more information, see Effect.

    Private Sub TextBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter  
       If (e.Data.GetDataPresent(DataFormats.Text)) Then  
         e.Effect = DragDropEffects.Copy  
       Else  
         e.Effect = DragDropEffects.None  
       End If  
    End Sub  
    
    private void textBox1_DragEnter(object sender,   
    System.Windows.Forms.DragEventArgs e)  
    {  
       if (e.Data.GetDataPresent(DataFormats.Text))   
          e.Effect = DragDropEffects.Copy;  
       else  
          e.Effect = DragDropEffects.None;  
    }  
    

    Hinweis

    Können eigene definieren DataFormats durch Angabe Ihres eigenen Objekts als die Object Parameter von der SetData Methode.You can define your own DataFormats by specifying your own object as the Object parameter of the SetData method. Stellen Sie dabei sicher, dass das angegebene Objekt serialisierbar ist.Be sure, when doing this, that the object specified is serializable. Weitere Informationen finden Sie unter ISerializable.For more information, see ISerializable.

  3. In der DragDrop -Ereignis für das Steuerelement, auf denen die Drop erfolgt, verwenden die GetData Methode, um die gezogenen Daten abzurufen.In the DragDrop event for the control where the drop will occur, use the GetData method to retrieve the data being dragged. Weitere Informationen finden Sie unter Data.For more information, see Data.

    Im folgenden Beispiel wird eine TextBox ist das Steuerelement gezogene (wobei die Drop erfolgt).In the example below, a TextBox control is the control being dragged to (where the drop will occur). Der Code legt die Text Eigenschaft von der TextBox steuern die gezogenen Daten gleich.The code sets the Text property of the TextBox control equal to the data being dragged.

    Private Sub TextBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragDrop  
       TextBox1.Text = e.Data.GetData(DataFormats.Text).ToString  
    End Sub  
    
    private void textBox1_DragDrop(object sender,   
    System.Windows.Forms.DragEventArgs e)  
    {  
       textBox1.Text = e.Data.GetData(DataFormats.Text).ToString();  
    }  
    

    Hinweis

    Darüber hinaus können Sie arbeiten mit der KeyState -Eigenschaft, je nach Schlüssel während des Drag-and-Drop-Vorgangs gedrückt bestimmte Auswirkungen auftreten (z. B. ist es die gezogenen Daten kopiert werden, wenn die STRG-Taste gedrückt wird, standard).Additionally, you can work with the KeyState property, so that, depending on keys depressed during the drag-and-drop operation, certain effects occur (for example, it is standard to copy the dragged data when the CTRL key is pressed).

Siehe auchSee Also

Gewusst wie: Hinzufügen von Daten zur ZwischenablageHow to: Add Data to the Clipboard
Gewusst wie: Abrufen von Daten aus der ZwischenablageHow to: Retrieve Data from the Clipboard
Drag & Drop-Vorgänge und Unterstützung der ZwischenablageDrag-and-Drop Operations and Clipboard Support