2013-01-08 31 views
6

Olası Çoğalt: VB.NET İlerleme Çubuğu


.NET progressbar not updating

Ben döngüler için skinTenimde ilerlemesini gösteren bir ilerleme çubuğu sınıfını oluşturdu. İlerleme çubuğu sınıf için kod:

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 

Burada döngü için kullanmak gibi olacaktır:

Dim pb As New ProgressBar 
pb.ProgressBarSetup(5000, "Test") 

For i As Integer = 0 To 5000 - 1 
     pb.IncProg() 
Next 

konu görsel bir sorundur. Tam ilerleme çubuğunun% 70-85'ini tamamlar ve sonra kapanır. Kapatıldığında, ilerleme çubuğu değeri ve maksimum değerler eşittir, ancak çubuk yalnızca uzunluğu yaklaşık dörtte üçüne kadar doldurulur.

Application.DoEvents() yerine progressBar.Refresh() kullanmayı denedim, ancak ilerlemeyi çok yavaşlatıyor ve yine de aynı sonucu veriyor.

Daha iyi görsel olarak çekici bir ilerleme çubuğu elde etmek için başka yollar var mı?

cevap

12

Bu etkiyi görmek, Windows 7'de normaldir. Sorun, X'e bir değer ayarladığınızda, sonraki 0,5-1 saniyede bu konuma kaydırılır. Eğer eyleminiz hızlı gerçekleşiyorsa, sadece% 50-80 oranında göreceksiniz. Çözüm önce daha yüksek bir değere ayarlanmak ve sonra istediğinize azaltmaktır. Böyle bir şey:

progressBar.Value += 2 
progressBar.Value -= 1 

Ve ayrıca geçici olarak maksimum değerini artırmak unutmayın olarak veya (5001 ayarlı olamaz) 5000 4999 den artan yaparken, örneğin, bir özel durum alabilirsiniz.

+0

Tamam, bunu deneyeceğim. ve Evet 5000-1'i koymayı unuttum: p Sadece bir örnek içindi. Teşekkürler! Gidip şimdi – Alex

+0

Mükemmel'i deneyeceğim. Bu işe yarıyor! Mükemmel. Siteniz bana izin verir vermez cevabınızı kabul edeceğim :) Çok takdir! – Alex

+0

Teşekkürler! Bu beni deli ediyordu, 50 (%) 'ye ayarlıyorum ve sadece 1/3 ... – Sebastian

İlgili konular