Control.DragDrop Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Вызывается при завершении операции перетаскивания.
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, если вы помещаете UserControl события with DragEnter и в DragDrop Форму Windows Forms и перетаскиваете что-то на UserControl объект во время разработкиDropDrop
, возникают события и DropEnter
. Однако при закрытии и повторном открытии DragEnter решения события и DragDrop больше не вызываются.
Дополнительные сведения об обработке событий см. в разделе Обработка и вызов событий.