ProgressBar status van het programma laten weergeven

Status
Niet open voor verdere reacties.

SteveFH

Gebruiker
Lid geworden
8 mrt 2010
Berichten
20
Hi there ^^

Als m'n programma start is het de bedoeling dat form X bepaalde gegevens in het programma laad. Echter als ik nu het programma start, zie ik een tijdje niets (in deze tijd voert het programma de code uit die in de 'MyBase.Load' staat) en pas als alle gegevens geladen zijn wordt form X weergegeven.

Wat ik graag wil bereiken is dat tijdens het laden van alle gegevens er een mooie ProgressBar te zien is die telkens, na elke stap, upgedate wordt. Ondanks wat ik tot nu toe heb geprobeerd krijg ik nog steeds geen ProgressBar te zien.

Kan iemand mij hiermee helpen?

Mvg,

Stefan

PS: Ik had iets gelezen over een BackgroundWorker of zo?
 
Dat zou je inderdaad met een backgroundworker kunnen doen, en daar zijn zat voorbeelden van te vinden. (wellicht in een andere variant, maar het principe is hetzelfde)

Wat ook nog een mogelijkheid is is om gewoon een timer te plaatsen die je activeert binnen de load functie (zodat het form meteen zichtbaar is) om in die timer vervolgens de code aan te roepen die alle taken verricht en ook de progressbar updatet. (uiteraard moet je die timer dan wel meteen zichzelf laten uitschakelen, anders wordt de code vaker uitgevoerd :P)
 
Voorbeeld van het gebruik van een backgroundworker

Dit is een simpel voorbeeldje van een form met twee buttons en progressbar die gebruik maken van een backgroundworker

' Start the long process.
Private Sub btnStartProcess_Click() Handles btnStartProcess.Click
' Get ready.
btnStartProcess.Enabled = False
btnCancel.Enabled = True
prgLongProcess.Value = 0

' Start the worker.
bgrLongProcess.WorkerReportsProgress = True
bgrLongProcess.WorkerSupportsCancellation = True
bgrLongProcess.RunWorkerAsync()
End Sub

' Cancel the long process.
Private Sub btnCancel_Click() Handles btnCancel.Click
bgrLongProcess.CancelAsync()
End Sub

' Display the progress.
Private Sub bgrLongProcess_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bgrLongProcess.ProgressChanged
prgLongProcess.Value = e.ProgressPercentage
End Sub

' The worker is done.
Private Sub bgrLongProcess_RunWorkerCompleted() Handles bgrLongProcess.RunWorkerCompleted
btnStartProcess.Enabled = True
btnCancel.Enabled = False
prgLongProcess.Value = 0
End Sub

' Do the work.
Private Sub bgrLongProcess_DoWork() Handles bgrLongProcess.DoWork
' This example just wastes some time.
Const NUM_SECONDS As Integer = 5
For i As Integer = 1 To NUM_SECONDS
' Pause 1 second.
Dim wait_until As Date = Now.AddSeconds(1)
Do While Now < wait_until

Loop

' If the user has canceled, stop.
If bgrLongProcess.CancellationPending Then Exit Sub

' Report our progress.
bgrLongProcess.ReportProgress(CInt(100 * i / NUM_SECONDS))
Next i
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan