Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/11/2009, 10:17
Avatar de jaullo
jaullo
 
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años, 1 mes
Puntos: 30
Respuesta: Progressbar en un datagridview

Para esto debes usar el background worker.... asi podras lanzar el porcentaje de avance mientras el grid se llena.

Por ejemplo:

Agregas un progressbar a tu for

agregas un BackGroundWorker

Luego pasas a vista código, seleccionas tu background worker y le colocas el método DoWork y le pones el siguiente codigo

Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Try
Dim strCn As String = "Integrated Security=SSPI;Persist Security Info=false;Initial Catalog=tubd;Data Source=(local)"
Dim cnSQL As New SqlClient.SqlConnection(strCn)

cnSQL.Open()

Me.BackgroundWorker1.ReportProgress(50)

System.Threading.Thread.Sleep(2000) ' Para simular tiempo de espera

Dim adp As New SqlClient.SqlDataAdapter("Select * from tabla", cnSQL)

Dim dsTemp As New DataSet

adp.Fill(dsTemp, "nombre_tabla")

Me.BackgroundWorker1.ReportProgress(100)

e.Result = dsTemp

Me.dgdDetalle.Columns("columna").ReadOnly = True

Catch ex As Exception

End Try


End Sub

Luego buscas tu bakgrounworker y le pones el metodo ProgressChanges, quedaria algo asi:

Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged

Me.progressbar.Value = e.ProgressPercentage

End Sub


Nuevamente buscas tu backgroundworker y le pones el metodo RunWorkerCompleted, quedando algo como lo siguiente:

Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
Me.dgdDetalle.DataSource = CType(e.Result, DataSet)

Me.dgdDetalle.DataMember = "tu_tabla"

' MsgBox("Metodo Terminado")


End Sub

Y por ultimo en el boton de busqueda o cualquier otro que uses, pones lo siguiente para activar tu backgroundworker

BackgroundWorker1.WorkerReportsProgress = True
Me.BackgroundWorker1.RunWorkerAsync()

Espero te sirva.

Saludos