Hace mucho tiempo y luego de sentirme un poco descepcionado con los gridviews de .NET y buscando la “alternativa” para poder desplegar datos de una forma clara y sencilla, encontre el control ListView que no esta precisamente orientado a un listado de datos pero a algunos nos acomoda mas.
Voy a indicar como lograr desplegar informacion al igual como se podria con un gridview, la unica desventaja es que la informacion no puede ser editada de forma directa.
Primero, debes arrastrar el control sobre un formulario y posteriormente definir las siguientes propiedades:
* FullRowSelect = true
* GridLines = true
* View = Details
Al establecer esas propiedades el control tomara el siguiente aspecto:

Ahora, necesitamos definir las columnas (ID – NOMBRE – DESCRIPCION-), hacemos clic en Columns y aparecera un recuadro como este:

Podemos agregar todas las que queramos, definiendo el texto a desplegar en la columna, el ancho, etc.
Una vez agregadas todas las que necesitamos se vera un tanto asi:

Con la parte de diseño ya terminada, es tiempo de poder empezar a mostrar datos en el listview. Primero, cambiemos el nombre por defecto y pongamos algo mas acorde, como listadoJuegos.
Ahora bien, el ejemplo lo hare conectandome a una base de datos en MS ACCESS 2007 y rellenare el listview de dos maneras, una con un DataReader y otra con un DataTable (El guille explica la diferencia y cuando usar uno y cuando usar el otro).
La estructura de la tabla es la siguiente:
Nombre tabla juegos
id => autonumerico, llave primaria.
nombre => texto
descipcion => texto
Agregue ademas, 2 botones al formulario, uno para cargar datos a traves de datarader y otro para hacerlo con datatable.
y el codigo para cargar datos dentro del listview :
Private Sub botonDR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botonDR.Click listadoJuegos.Items.Clear() comando = New OleDbCommand(”SELECT * FROM juegos”, conexion) Try dr = comando.ExecuteReader While dr.Read Dim item As New ListViewItem(dr(”id”).ToString) item.SubItems.Add(dr(”nombre”).ToString) item.SubItems.Add(dr(”descripcion”).ToString) listadoJuegos.Items.Add(item) End While Catch ex As Exception MsgBox(”Fallo la consulta, mensaje: ” + ex.Message) End Try End Sub Private Sub botonDT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botonDT.Click listadoJuegos.Items.Clear() Try dt = New DataTable(”juegos”) comando = New OleDbCommand(”SELECT * FROM juegos”, conexion) adaptador.SelectCommand = comando adaptador.Fill(dt) i = 0 For Each fila As DataRow In dt.Rows Dim item As New ListViewItem(dt(i)(”id”).ToString) item.SubItems.Add(dt(i)(”nombre”).ToString) item.SubItems.Add(dt(i)(”descripcion”).ToString) listadoJuegos.Items.Add(item) i += 1 Next Catch ex As Exception MsgBox(”Fallo la consulta, mensaje: ” + ex.Message) End Try End Sub
A todo esto podemos agregarle eventos, el primero para detectar cual o cuales son las filas que estan seleccionadas al hacer doble click en el listview o al clickear un boton (agrego un tercer boton para lanzar el evento ).
Private Sub registrosSeleccionados() Dim indices As ListView.SelectedIndexCollection = listadoJuegos.SelectedIndices If indices.Count <> 0 Then For Each indice As Integer In indices MsgBox(”Indice Seleccionado: ” + indice.ToString) Dim item As ListViewItem = listadoJuegos.Items(indice) MsgBox(”ID: ” + item.Text + Chr(13) + “Nombre: ” + item.SubItems(1).Text + Chr(13) + “Descripcion: ” + item.SubItems(2).Text) Next End If End Sub Private Sub registroSeleccionado() Dim indices As ListView.SelectedIndexCollection = listadoJuegos.SelectedIndices If indices.Count <> 0 Then Dim indice As Integer = indices(0) MsgBox(”Indice Seleccionado: ” + indice.ToString) Dim item As ListViewItem = listadoJuegos.Items(indice) MsgBox(”ID: ” + item.Text + Chr(13) + “Nombre: ” + item.SubItems(1).Text + Chr(13) + “Descripcion: ” + item.SubItems(2).Text) End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click registrosSeleccionados() End Sub Private Sub listadoJuegos_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles listadoJuegos.DoubleClick registroSeleccionado() End Sub
Este es solo el comienzo al menos para crear un mantenedor de registros, sin embargo es la base para todo lo siguiente.

Ojo, que esta solucion debe complementarse con algun paginador de resultados para evitar el desborde de recursos.
[...] VB.NET – Utilizar un Listview para desplegar datos [...]
Oye mira soy nuevo en esto y necesito aser una conexion de una aplicacion de VB.Net con mYsql pero no s realmante nada. Desde aser la aplicacion ni se que conector se debe de bajar asi como que lineas escribir para el conector bueno espero que me ayudes si me pudieras ayudar algo o que me facilites un ejemplo seria grandioso deverdad me lo puedes mandar al correo : tazmania_99@hotmail.com. de antemano gracias y que estes bien espero tu respuesta.
Misael, te falto seguir revisando el blog, ya que no hace mucho agregue el metodo de conexion entre vb.net y mysql:
http://www.donubu.com/2008/09/21/vbnet-con-mysql-mysql-driver-cs/
Sale todo lo necesario.