Control.DragDrop Evento
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Ocorre quando uma operação de arrastar e soltar é concluída.
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
Tipo de evento
Exemplos
Este trecho de código demonstra como usar o DragDrop evento . Consulte o DoDragDrop método para obter o exemplo de código completo.
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
Comentários
As X propriedades e Y do DragEventArgs estão nas coordenadas da tela, não nas coordenadas do cliente. A linha de código do Visual C# a seguir converte as propriedades em um cliente Point.
Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));
Observação
Em versões anteriores a .NET Framework 2.0, se você colocar eventos UserControl com DragEnter e DragDrop em um Windows Form e arrastar e soltar algo no UserControl em tempo de design, os DropDrop
eventos e DropEnter
serão gerados. No entanto, quando você fecha e reabre a solução, os DragEnter eventos e DragDrop não são gerados novamente.
Para obter mais informações sobre como lidar com eventos, consulte Manipulando e gerando eventos.