Mover elementos de un listview

Este es un sencillo, pero muy poco visto, ejemplo de como podemos hacer en visual basic .net para mover (mediante código) los elementos de un listview.

Necesitaremos un formulario con un listview y dos botones:

Ahora, llenaremos el listview con algunos datos para el ejemplo y lo haremos en el evento Load del mismo:


ListView1.Items.Add("Carlos")
ListView1.Items.Add("Marcelo")
ListView1.Items.Add("Damian")
ListView1.Items.Add("Susana")
ListView1.Items.Add("Gerardo")
ListView1.Items.Add("Claudia")
ListView1.Items.Add("Marta")
ListView1.Items.Add("Liliana")
ListView1.Items.Add("Eliseo")
ListView1.Items.Add("Agustin")
ListView1.Items.Add("Camila")
ListView1.Items.Add("Lucas")
ListView1.Items.Add("Jorge")
ListView1.Items.Add("Mabel")
ListView1.Items.Add("Natalia")
ListView1.Items.Add("Gabriela")
ListView1.Items.Add("Paula")
ListView1.Items.Add("Matias")
ListView1.Items.Add("Martin")
ListView1.Items.Add("Juan")
ListView1.Items.Add("Maria")
ListView1.Items.Add("Abel")
ListView1.Items.Add("Pedro")

ListView1.FullRowSelect = True
ListView1.MultiSelect = False

ListView1.HideSelection = False

Notese que también hemos seteado tres propiedades muy importantes: FullRowSelect = True para que al seleccionar un item se marque toda la fila, MultiSelect = False para que solo se pueda seleccionar de a un item y HideSelection = False para que siempre veamos que item está seleccionado.

Luego en el evento click del botón SUBIR:

If ListView1.SelectedIndices.Count > 0 Then
Try
Dim temporal As String
temporal = ListView1.Items(ListView1.FocusedItem.Index - 1).Text

ListView1.Items(ListView1.FocusedItem.Index – 1).Text = ListView1.FocusedItem.Text
ListView1.FocusedItem.Text = temporal

ListView1.Items.Item(ListView1.FocusedItem.Index – 1).Selected = True
ListView1.Items.Item(ListView1.FocusedItem.Index – 1).Focused = True

Catch ex As Exception
Beep()
End Try
Else
MsgBox(“Debe seleccionar un item de la lista.”)
End If

y en el evento click del botón BAJAR:

If ListView1.SelectedIndices.Count > 0 Then
Try
Dim temporal As String
temporal = ListView1.Items(ListView1.FocusedItem.Index + 1).Text

ListView1.Items(ListView1.FocusedItem.Index + 1).Text = ListView1.FocusedItem.Text
ListView1.FocusedItem.Text = temporal

ListView1.Items.Item(ListView1.FocusedItem.Index + 1).Selected = True
ListView1.Items.Item(ListView1.FocusedItem.Index + 1).Focused = True

Catch ex As Exception
Beep()
End Try
Else
MsgBox(“Debe seleccionar un item de la lista.”)
End If

Esto es todo, pueden ejecutar el programa y probar como funciona. Les dejo una captura del progrma en funcionamiento:

Espero que, como a mi, les sea muy útil.



5 Responses to “Mover elementos de un listview”

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Este es un sencillo, pero muy poco visto, ejemplo de como podemos hacer en visual basic .net para mover (mediante código) los elementos de un listview. Necesitaremos un formulario con un listview y dos botones: Ahora, llenare….

  2. Cristian dice:

    Justo lo que necesitaba, para mi proyecto sobre pocket pc. Mil gracias.

  3. D. Calix dice:

    Hey!!! esta buenisimo tu pagina, de verdad que si. gracias por compartir tu conocimiento con nosotros…
    Felicidades… Esperamos Mas

  4. Joseph dice:

    hey gracias x esta informacion no se si tienes talvez algun codigo similar pero pasar los elementos de un listbox a otro listbox distinto?
    desde ya muchas gracias!

  5. muchas gracias, la verdad lo estoy usando en un proyecto de gran magnitud donde se precisa usar mucho el componente ListView.

Comentar