Foros del Web » Programación para mayores de 30 ;) » .NET »

No me resulta el DragDrop en mi listview

Estas en el tema de No me resulta el DragDrop en mi listview en el foro de .NET en Foros del Web. Hola amigos del foro, estoy trabajando con vb.net 2005 y sqlserver2000, tengo un form con un treeview y un listview, en el treeview se cargan ...
  #1 (permalink)  
Antiguo 10/09/2009, 17:08
 
Fecha de Ingreso: abril-2008
Mensajes: 82
Antigüedad: 16 años, 9 meses
Puntos: 0
No me resulta el DragDrop en mi listview

Hola amigos del foro, estoy trabajando con vb.net 2005 y sqlserver2000, tengo un form con un treeview y un listview, en el treeview se cargan las tablas de mi bd con sus campos y puedo arrastras los campos hasta el listview con el evento ItemDrag,DragEnter y DragDrop y todo resulta bien, pero si quiero hacer lo mismo dentro del listview, es decir arrastrar los items dentro del mismo listview para reordenarlos haciendo los eventos correspondientes, no me resulta, logro seleccionar los items y simular el movimiento, pero no se cambian de posición, depurandolo me pareció ver que no entra al evento DragDrop del listview cuando intento arrastrar los elementos dentro del propio listview pero si lo hace cuando lo hago desde el treeview.He sacado un código que aparece varias veces en internet donde a la gente le resulta, entonces creo que yo debo estar fallando en algo, solo sé que no entra al dragdrop y no sé por qué.
Aquí muestro mi codigo:

Private Sub TreeView1_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles TreeView1.ItemDrag

If TreeView1.SelectedNode.Text <> "Tablas" Then
If TreeView1.SelectedNode.Parent.Text <> "Tablas" Then
DoDragDrop(e.Item, DragDropEffects.Copy)
End If
End If
End Sub

Private Sub ListView1_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles ListView1.ItemDrag

DoDragDrop(e.Item, DragDropEffects.Copy)

End Sub

Private Sub ListView1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragEnter

If TreeView1.Focused Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.Move
End If

End Sub

Private Sub ListView1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragDrop

Dim i As Integer
Dim Ntabla As String
Dim existe As Boolean = False

If TreeView1.Focused Then

If TreeView1.SelectedNode.Text <> "Tablas" And TreeView1.SelectedNode.Parent.Text <> "Tablas" Then

Ntabla = TreeView1.SelectedNode.Parent.Text
Ntabla = Ntabla + "." + TreeView1.SelectedNode.Text
If ListView1.Items.Count > 0 Then
For i = 0 To ListView1.Items.Count - 1
If Ntabla = ListView1.Items.Item(i).Text Then
existe = True
End If
Next
If existe Then
Exit Sub
Else
ListView1.Items.Add(Ntabla)
End If
Else
ListView1.Items.Add(Ntabla)
End If
End If
Else
'<< Ordenando los items del list >>
' -----------------------------

'Si los Items no estan seleccionados Sale del Sub
If ListView1.SelectedItems.Count = 0 Then Exit Sub
'Tomamos la ubicación del puntero del ratón en el control.
Dim p As Point = ListView1.PointToClient(New Point(e.X, e.Y))
'Leemos el item donde se ubica el ratón
Dim dragToItem As ListViewItem = ListView1.GetItemAt(p.X, p.Y)
If dragToItem Is Nothing Then Return
'Tomamos el Index del Item y recorremos todos los items
Dim dragIndex As Integer = dragToItem.Index
Dim sel(ListView1.SelectedItems.Count) As ListViewItem
For i = 0 To ListView1.SelectedItems.Count - 1
sel(i) = ListView1.SelectedItems.Item(i)
Next
For i = 0 To ListView1.SelectedItems.Count - 1
'Arrastramos a la ubicación de destino.
Dim dragItem As ListViewItem = sel(i)
Dim itemIndex As Integer = dragIndex
If itemIndex = dragItem.Index Then Return
If dragItem.Index < itemIndex Then
itemIndex = itemIndex + 1
Else
itemIndex = dragIndex + i
End If
'Lo insertamos.
Dim insertitem As ListViewItem = CType(dragItem.Clone, ListViewItem)
ListView1.Items.Insert(itemIndex, insertitem)
'Borramos el Item de su ubicación original
'Lo movemos a su nueva ubicación.
ListView1.Items.Remove(dragItem)
Next
'Por ultimo refrecamos el List para reasignar indices
ListView1.Refresh()
End If
End Sub

...También probé sacando el codigo correspondiente al treeview para ver si influía y dejé solo el codigo correspondiente al listview pero al parecer no entró al procedimiento, como indiqué antes si hago el proceso arrastrando los datos desde el treeview funciona a la perfección y entra al eventro dragdrop, pero si arrastro los items desde el listview al mismo listview para cambiarlos de posición, al parecer no entra al evento dragdrop y no hace nada, o entra y sale a la vez, no puedo chequearlo bien.He perdido mucho tiempo tratando de descubrir el error y qusiera saber si alguien lo descubre o me dá alguna solución.
De antemano se les agradece mucho.
Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:51.