Eventuali duplicati:
.NET progressbar not updatingVB.NET Progress Bar
ho costruito una classe barra di avanzamento che mostra l'avanzamento nel mio cicli for. Ecco il codice per la classe barra di avanzamento:
Public Class frmProgress
Private Sub frmProgress_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
progressBar.Minimum = 0
End Sub
Public Sub ProgressBarSetup(ByRef Maximum As Integer, ByRef Title As String)
progressBar.Maximum = Maximum
progressBar.Value = 0
Me.Text = Title
Me.Show()
End Sub
Public Sub IncProg()
progressBar.Value += 1
Application.DoEvents()
If progressBar.Value = progressBar.Maximum Then
Me.Close()
End If
End Sub
End Class
Ecco come avrei usato in un ciclo for:
Dim pb As New ProgressBar
pb.ProgressBarSetup(5000, "Test")
For i As Integer = 0 To 5000 - 1
pb.IncProg()
Next
Il problema è un problema visivo. Completa fino al 70-85% della barra di avanzamento completa e poi si chiude. Alla chiusura, il valore della barra di avanzamento e i valori massimi sono uguali, tuttavia la barra viene riempita solo per circa tre quarti della sua lunghezza.
Ho provato a utilizzare progressBar.Refresh() anziché Application.DoEvents() ma rallenta il progresso di molto - e mi dà ancora lo stesso risultato.
Esistono altri modi per ottenere una barra di avanzamento visivamente migliore?
Va bene ci proverò. e sì ho dimenticato di mettere 5000-1: p è stato solo per un esempio. Grazie! Vado a provarlo ora – Alex
Perfetto. Che funzioni! Eccellente. Accetterò la tua risposta non appena il sito mi permetterà :) Molto apprezzato! – Alex
grazie! Questo mi stava facendo impazzire, l'ho impostato a 50 (%) e sarebbe salito a 1/3 ... – Sebastian