
22/11/2009, 10:17
|
 | | | Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años, 10 meses 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 |