VB.Net中提供了ProgressBar控件,用于显示进度条
湘潭县ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
我建议你不要用进度条显示剩余时间而是显示执行进度
这样比较好控制
设置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
不然进度条的更新也许比计算的速度还要慢很多
该实例有很多实现方法,下面介绍一种不同的给你:
首先要在窗体中载入以下控件: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 控件常用属性有:Maximum、Minimum、Step、Value;常用的方法有:PerformStep、Increment。
Maximum、Minimum 属性:指ProgressBar 控件可变化的最大和最小值。
Step 属性:ProgressBar 控件调用 PerformStep 方法时候增长的步长。
Value 属性:ProgressBar 控件当前的位置值。
PerformStep 方法:按照 Step 属性的数量增加进度栏的当前位置。
Increment 方法:按指定的数量增加进度栏的当前位置。
ProgressBar 控件又称进度条控件,它是一个应用很广的控件,可以在需要执行较长的程序过程中使用它来指示当前任务执行的进度,如果这样的过程中没有视觉提示,用户可能会认为应用程序不响应,通过在应用程序中使用 ProgressBar,可以告诉用户应用程序正在执行任务且仍在响应。
有不是多线程的,.NET有一个异步控件来完成这个事情,BackgroundWorker。
多线程其实比你想象的简单,你计划操作步骤,打比方说我们处理一个文件,用进度条来显示进度。我们可以定义解压他进度为5%,解密文件后哦进度完成20%,读取数据后进度完成30%,重新整理插入数据后进度完成60%,再加密,进度为80%,再压缩进度为90%,再发送进度为95%,删除历史记录结束动作进度为100%。这种事就要多线程去完成,调用控件你就需要委托或者回调控件。
进度条给他赋值就好了,程序运行后你会发现进度条在动。
这是现在90%程序进度条原理。
在状态栏的 Panel 属性中,有一项可以将整个 Panel 定义成一个进度条的,你不妨试试。在它的属性页中有设置。