在状态栏的 Panel 属性中,有一项可以将整个 Panel 定义成一个进度条的,你不妨试试。在它的属性页中有设置。
成都创新互联公司是网站建设专家,致力于互联网品牌建设与网络营销,专业领域包括成都网站设计、网站制作、电商网站制作开发、微信小程序定制开发、微信营销、系统平台开发,与其他网站设计及系统开发公司不同,我们的整合解决方案结合了恒基网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,且不断评估并优化我们的方案,为客户提供全方位的互联网品牌整合方案!
这个不象是怎么传递Pr值的问题吧,是不是读取过程中卡啊?
在pr=J 下面加一句My.Application.DoEvents() ,暂时释放一下控制权,使程序去处理完其它事件。再说不需要时间控件,直接在循环过程中修改进度值也可以,然后来一句My.Application.DoEvents()。
该实例有很多实现方法,下面介绍一种不同的给你:
首先要在窗体中载入以下控件:progressbar(进度条),label(用来实时显示文本提示),两个timer(分别控制进度条进度的增减),然后用以下代码就能实现:
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
'上述过程是设置控件的初始值,也可以在属性面板设置
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Value += 1
Label1.Text = "当前完成" ProgressBar1.Value "%"
If (ProgressBar1.Value = 100) Then
Timer1.Enabled = False
Timer2.Enabled = True
End If
End Sub
'timer1用来控制进度的增加
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
ProgressBar1.Value -= 1
Label1.Text = "当前完成" ProgressBar1.Value "%"
If (ProgressBar1.Value = 0) Then
Timer1.Enabled = True
Timer2.Enabled = False
End If
End Sub
'time2用来控制进度的减少
End Class
VB.Net中提供了ProgressBar控件,用于显示进度条
我建议你不要用进度条显示剩余时间而是显示执行进度
这样比较好控制
设置ProgressBar的Minimum和Maximum属性为循环的起始和终止数值
然后在代码的循环体中计算当前循环的进度,然后设置进度条的Value属性,
将进度显示在进度条上
比如,简单的例子:
Dim Progress As Integer
ProgressBar1.Minimum = Min
ProgressBar1.Maximum = Max
For i As Integer = Min To Max
'执行计算.......
Progress = i \ Max '计算进度
ProgressBar1.Value = Progress '显示进度
My.Application.DoEvents() '使用Doevents防止窗体假死使进度条看不到,但是会严重降低运行速度
Next
这里的优化技巧是,可以设置为每隔N次循环才更新进度条
If Not Progress Mod N Then ProgressBar1.Value = Progress
不然进度条的更新也许比计算的速度还要慢很多
程序底部状态栏吧?
工具箱
-
菜单和工具栏
选项卡下
有个
StatusStrip
拖到窗体上就跑下面了
点击它,弹出菜单中
选择
ProgressBar
就指定
进度条在
状态栏上了。
你原来添加的PB可以删除了。