Control.DragDrop Control.DragDrop Control.DragDrop Control.DragDrop Event

Определение

Вызывается при завершении операции перетаскивания.Occurs when a drag-and-drop operation is completed.

public:
 event System::Windows::Forms::DragEventHandler ^ DragDrop;
public event System.Windows.Forms.DragEventHandler DragDrop;
member this.DragDrop : System.Windows.Forms.DragEventHandler 
Public Custom Event DragDrop As DragEventHandler 

Примеры

Этот фрагмент кода демонстрирует использование DragDrop событий.This code excerpt demonstrates using the DragDrop event. См. в разделе DoDragDrop метод полный пример кода.See the DoDragDrop method for the complete code example.

void ListDragTarget_DragDrop( Object^ /*sender*/, System::Windows::Forms::DragEventArgs^ e )
{
   // Ensure that the list item index is contained in the data.
   if ( e->Data->GetDataPresent( System::String::typeid ) )
   {
      Object^ item = dynamic_cast<Object^>(e->Data->GetData( System::String::typeid ));
      
      // Perform drag-and-drop, depending upon the effect.
      if ( e->Effect == DragDropEffects::Copy || e->Effect == DragDropEffects::Move )
      {
         // Insert the item.
         if ( indexOfItemUnderMouseToDrop != ListBox::NoMatches )
                        ListDragTarget->Items->Insert( indexOfItemUnderMouseToDrop, item );
         else
                        ListDragTarget->Items->Add( item );
      }
   }

   // Reset the label text.
   DropLocationLabel->Text = "None";
}
private void ListDragTarget_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) 
{
    // Ensure that the list item index is contained in the data.
    if (e.Data.GetDataPresent(typeof(System.String))) {

        Object item = (object)e.Data.GetData(typeof(System.String));

        // Perform drag-and-drop, depending upon the effect.
        if (e.Effect == DragDropEffects.Copy ||
            e.Effect == DragDropEffects.Move) {
        
            // Insert the item.
            if (indexOfItemUnderMouseToDrop != ListBox.NoMatches)
                ListDragTarget.Items.Insert(indexOfItemUnderMouseToDrop, item);
            else
                ListDragTarget.Items.Add(item);
            
        }
    }
    // Reset the label text.
    DropLocationLabel.Text = "None";
}
Private Sub ListDragTarget_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles ListDragTarget.DragDrop
    ' Ensures that the list item index is contained in the data.

    If (e.Data.GetDataPresent(GetType(System.String))) Then

        Dim item As Object = CType(e.Data.GetData(GetType(System.String)), System.Object)

        ' Perform drag-and-drop, depending upon the effect.
        If (e.Effect = DragDropEffects.Copy Or _
            e.Effect = DragDropEffects.Move) Then

            ' Insert the item.
            If (indexOfItemUnderMouseToDrop <> ListBox.NoMatches) Then
                ListDragTarget.Items.Insert(indexOfItemUnderMouseToDrop, item)
            Else
                ListDragTarget.Items.Add(item)

            End If
        End If
        ' Reset the label text.
        DropLocationLabel.Text = "None"
    End If
End Sub

Комментарии

X И Y свойства DragEventArgs в координатах экрана, а не клиента.The X and Y properties of the DragEventArgs are in screen coordinates, not client coordinates. Следующая строка кода Visual C# преобразует свойства клиенту Point.The following line of Visual C# code converts the properties to a client Point.

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

Примечание

В версии более ранней, чем .NET Framework 2.0.NET Framework 2.0, если поместить UserControl с DragEnter и DragDrop событий в Windows Forms и перетащите что-то на UserControl во время разработки, DropDrop и DropEnter события вызывается.In versions earlier than .NET Framework 2.0.NET Framework 2.0, if you put a UserControl with DragEnter and DragDrop events on a Windows Form and drag and drop something onto the UserControl at design time, the DropDrop and DropEnter events are raised. Тем не менее, если закрыть и снова откройте решение, DragEnter и DragDrop события не вызываются еще раз.However, when you close and reopen the solution, the DragEnter and DragDrop events are not raised again.

Дополнительные сведения об обработке событий см. в разделе обработка и вызов событий.For more information about handling events, see Handling and Raising Events.

Применяется к

Дополнительно