2013-01-08 21 views
6

संभव डुप्लिकेट:
.NET progressbar not updatingVB.NET प्रगति बार

मैं एक प्रगति बार वर्ग कि छोरों के लिए मेरे में प्रगति दिखाता है का निर्माण किया। यहाँ प्रगति बार वर्ग के लिए कोड है:

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 

यहाँ कैसे मैं पाश के लिए एक में उपयोग करेंगे:

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

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

मुद्दा एक दृश्य समस्या है। यह पूर्ण प्रगति पट्टी का 70-85% तक पूरा करता है और फिर बंद हो जाता है। बंद होने पर, प्रगति बार मान और अधिकतम मान बराबर होते हैं, फिर भी बार केवल इसकी लंबाई के लगभग तीन चौथाई तक भर जाता है।

मैंने एप्लिकेशन के बजाय progressBar.Refresh() का उपयोग करने की कोशिश की। DoEvents() लेकिन यह बहुत प्रगति को धीमा कर देता है - और फिर भी मुझे एक ही परिणाम देता है।

क्या बेहतर दृष्टि से आकर्षक प्रगति पट्टी प्राप्त करने के कोई अन्य तरीके हैं?

उत्तर

12

यह प्रभाव देखना विंडोज 7 पर सामान्य है। समस्या यह है कि जब आप एक्स को मान सेट करते हैं, तो यह अगले 0.5-1 सेकेंड में इस स्थिति में स्लाइड करता है। तो यदि आपकी कार्रवाई तेजी से हो रही है, तो आप इसे केवल 50-80% पर पूरा देखेंगे। समाधान पहले उच्च मूल्य पर सेट करना है और उसके बाद आप चाहते हैं कि कमी। कुछ इस तरह:

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

और भी अस्थायी रूप से अधिकतम बढ़ाने के लिए मत भूलना, या आप, उदाहरण के लिए, जब (आप 5001 के लिए सेट नहीं कर सकते हैं) 5000 के लिए 4999 से बढ़ाने के लिए एक अपवाद हो सकता है।

+0

ठीक है, मैं कोशिश करूँगा। और हाँ मैं 5000-1 डालना भूल गया: पी यह सिर्फ एक उदाहरण के लिए था। धन्यवाद! मैं जाऊंगा और अब कोशिश करूँगा – Alex

+0

बिल्कुल सही। यह काम करता है! अति उत्कृष्ट। जैसे ही साइट मुझे देता है मैं आपके उत्तर को स्वीकार करूंगा :) बहुत सराहना की! – Alex

+0

धन्यवाद! यह मुझे पागल कर रहा था, मैंने इसे 50 (%) पर सेट किया और यह केवल 1/3 तक पहुंच जाएगा ... – Sebastian

संबंधित मुद्दे