Se puede usar el método DoDragDrop de un control para inicializar el arrastre de información y detener la ejecución del hilo principal hasta que la información seleccionada sea soltada.
Este método toma dos parámetros: data, que define la información que será arrastrada y allowedEffects que define las operaciones válidas All, Copy, Move, Link, None, Scroll.
El siguiente ejemplo muestra la secuencia de arrastrado de una cadena almacenda en un control TextBox1 y el soltado en un control TextBox2
1º Se Inicializa el arrastre
Private Sub TextBox1_MouseDown(ByVal sender As System.Object, ByVal e As MouseEventArgs) Handles TextBox1.MouseDown
Dim DragDropResult As DragDropEffects
If e.Button = MouseButtons.Left Then
DragDropResult = TextBox1.DoDragDrop(TextBox1.Text, DragDropEffects.All)
If DragDropResult = DragDropEffects.Move Then
TextBox1.Text = ""
End If
End If
End Sub
2º Se modifica el ícono del ratón
Private Sub TextBox2_DragOver(ByVal sender As Object, ByVal e As DragEventArgs) Handles TextBox2.DragOver
Select Case e.KeyState
Case 1
'No key pressed
e.Effect = DragDropEffects.Move
Case 9
'CONTROL key pressed
e.Effect = DragDropEffects.Copy
Case Else
e.Effect = DragDropEffects.None
End Select
End Sub
3º Se suelta la información
Public Sub TextBox2_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles TextBox2.DragDrop
TextBox2.Text = e.Data.GetData(DataFormats.Text).ToString
End Sub
Para más información:
MOC 2373 - Programing with Microsoft Visual Basic .NET
MSDN - DragDropEffects