Cita:
Iniciado por gnzsoloyo
1) No acoples la generación de la visualizacion a la base de datos. Crea una clase específica para administrar la relación de la aplicación con la base, y ponle todas las llamadas allí (obviamente creando una para cada caso nuevo que necesites).
2) No configures la visualización del ListView en el mismo método que lo carga. Son acciones y conceptos diferentes. Separalo al menos en dos: Uno para confirurar el control y otro para cargarlo.
3) No manipules directamente el control en el Sub. Pasalo como parámetro y cargalo así. Incluso más, te conviene pasar el control y la tabla de datos (no un reader, por favor, un DataSet o DataTable) para hacer toda la tarea.
Hola otra vez gnzsoloyo, he seguido tus consejos 2 y 3 (excepto lo de pasar tambien el dataset, esta "Under Construction"), he metido la configuracion de visualizacion del ListView en un Sub aparte, y he enviado por cabecera el ListView en vez de trabajar con el directamente, he colocado los ListView.BeginUpdate() y ListView.EndUpdate() fuera del sub (antes y despues respectivamente de la llamada al sub de carga) y noto una mejoria en la visualiacion de la pantalla, pero he probado a meter un Threading.Thread.Sleep(500) dentro del loop para comprobar la carga.
Código vb:
Ver originalDo While datos.Read
Threading.Thread.Sleep(500)
Dim elem As New ListViewItem
elem.ImageIndex = 0
elem.Text = datos.GetValue(0)
elem.Tag = datos.GetValue(0)
For i = 1 To datos.FieldCount - 1
elem.SubItems.Add(datos.GetValue(i))
Next
If contador = 0 Then
elem.BackColor = Color.Beige
contador = contador + 1
Else
elem.BackColor = Color.Bisque
contador = contador - 1
End If
tabla.Items.Add(elem)
Loop
Al meter el Sleep vuelve a quedarse la pantalla congelda, ¿el metodo sleep provoca esos efectos?
Una cosa mas, tu consejo numero 1 no lo entiendo bien, ¿Te refieres a que haga todas las llamadas a la base de datos y cargue un DataSet o DataTable en un sub a parte y luego lo envie a la visualizacion?
Muchas gracias por tu infinita paciencia.