Control.DragDrop 事件  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
拖放操作完成时发生。
public:
 event System::Windows::Forms::DragEventHandler ^ DragDrop;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 事件。 有关完整代码示例, DoDragDrop 请参阅 方法。
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, DragEventArgs e)
{
    // Ensure that the list item index is contained in the data.
    if (e.Data.GetDataPresent(typeof(System.String)))
    {
        Object item = 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
注解
的 XDragEventArgs 和 Y 属性位于屏幕坐标中,而不是客户端坐标。 以下 Visual C# 代码行将属性转换为客户端 Point。
Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));
注意
在低于 .NET Framework 2.0 的版本中,如果在 Windows 窗体上放置 UserControl 了 和 DragEnterDragDrop 事件,并在设计时将和 事件拖放到 UserControl 中,DropDrop则会引发 和 DropEnter 事件。 但是,关闭并重新打开解决方案时, DragEnter 不会再次引发 和 DragDrop 事件。
有关处理事件的详细信息,请参阅 处理和引发事件。