VB本身有進(jìn)度條控件。程序啟動(dòng)時(shí)加載多少控配置,組件都是編寫源碼時(shí)可知的。進(jìn)度條的上限就是加載組件,配置數(shù)的和,加載成功一個(gè)就自加1
我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、廬山ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的廬山網(wǎng)站制作公司
VB.Net中提供了ProgressBar控件,用于顯示進(jìn)度條
我建議你不要用進(jìn)度條顯示剩余時(shí)間而是顯示執(zhí)行進(jìn)度
這樣比較好控制
設(shè)置ProgressBar的Minimum和Maximum屬性為循環(huán)的起始和終止數(shù)值
然后在代碼的循環(huán)體中計(jì)算當(dāng)前循環(huán)的進(jìn)度,然后設(shè)置進(jìn)度條的Value屬性,
將進(jìn)度顯示在進(jìn)度條上
比如,簡單的例子:
Dim Progress As Integer
ProgressBar1.Minimum = Min
ProgressBar1.Maximum = Max
For i As Integer = Min To Max
'執(zhí)行計(jì)算.......
Progress = i \ Max '計(jì)算進(jìn)度
ProgressBar1.Value = Progress '顯示進(jìn)度
My.Application.DoEvents() '使用Doevents防止窗體假死使進(jìn)度條看不到,但是會(huì)嚴(yán)重降低運(yùn)行速度
Next
這里的優(yōu)化技巧是,可以設(shè)置為每隔N次循環(huán)才更新進(jìn)度條
If Not Progress Mod N Then ProgressBar1.Value = Progress
不然進(jìn)度條的更新也許比計(jì)算的速度還要慢很多
這個(gè)不象是怎么傳遞Pr值的問題吧,是不是讀取過程中卡???
在pr=J 下面加一句My.Application.DoEvents() ,暫時(shí)釋放一下控制權(quán),使程序去處理完其它事件。再說不需要時(shí)間控件,直接在循環(huán)過程中修改進(jìn)度值也可以,然后來一句My.Application.DoEvents()。
該實(shí)例有很多實(shí)現(xiàn)方法,下面介紹一種不同的給你:
首先要在窗體中載入以下控件:progressbar(進(jìn)度條),label(用來實(shí)時(shí)顯示文本提示),兩個(gè)timer(分別控制進(jìn)度條進(jìn)度的增減),然后用以下代碼就能實(shí)現(xiàn):
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
Timer1.Interval = 500
Timer2.Interval = 500
ProgressBar1.Value = 0
ProgressBar1.Maximum = 100
ProgressBar1.Minimum = 0
End Sub
'上述過程是設(shè)置控件的初始值,也可以在屬性面板設(shè)置
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Value += 1
Label1.Text = "當(dāng)前完成" ProgressBar1.Value "%"
If (ProgressBar1.Value = 100) Then
Timer1.Enabled = False
Timer2.Enabled = True
End If
End Sub
'timer1用來控制進(jìn)度的增加
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
ProgressBar1.Value -= 1
Label1.Text = "當(dāng)前完成" ProgressBar1.Value "%"
If (ProgressBar1.Value = 0) Then
Timer1.Enabled = True
Timer2.Enabled = False
End If
End Sub
'time2用來控制進(jìn)度的減少
End Class