VB .NET如何在计算过程中加入进度条?

由于计算的时间比较长,里面也没有循环,是在数据库中直接进行计算,请问在这种情况下如何制作进度条?计算的时间肯定是未知的。

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
不然进度条的更新也许比计算的速度还要慢很多
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-30

VB.NET创建进度条具体参考代码如下:

<DIV id="Lay1" style="Z-INDEX: 1; LEFT: 1%; VISIBILITY: hidden; WIDTH: 99%; CURSOR: crosshair; POSITION: absolute; TOP: 32px; HEIGHT: 95%; BACKGROUND-COLOR: #ffffff"><FONT face="宋体"></FONT><FONT face="宋体"></FONT><FONT face="宋体"></FONT><FONT face="宋体"></FONT><br>
<b><font color="#800080" size="2">      & nbsp;          正在检索数据,请稍候...</font></b>
<table align="center">
<tr>
<td>
<div style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: black 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 8pt; PADDING-BOTTOM: 2px; BORDER-LEFT: black 1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: black 1px solid"><span id="progress1"> </span>
<span id="progress2"> </span> <span id="progress3"> </span> <span id="progress4">
 </span> <span id="progress5"> </span> <span id="progress6"> </span>
<span id="progress7"> </span> <span id="progress8"> </span> <span id="progress9">
 </span> <span id="progress10"> </span> <span id="progress11"> </span>
<span id="progress12"> </span> <span id="progress13"> </span><span id="progress14"> </span><span id="progress15"> </span>
</div>
</td>
</tr>
</table>
<script language="javascript">
var progressEnd = 15; // set to number of progress <span>'s.
var progressColor = 'blue'; // set to progress bar color
var progressInterval = 300; // set to time between updates (milli-seconds)
var progressAt = progressEnd;
var progressTimer;
function progress_clear() {
for (var i = 1; i <= progressEnd; i++) document.getElementById('progress'+i).style.backgroundColor = 'transparent';
progressAt = 0;
}
function progress_update() {
progressAt++;
if (progressAt > progressEnd) progress_clear();
else document.getElementById('progress'+progressAt).style.backgroundColor = progressColor;
progressTimer = setTimeout('progress_update()',progressInterval);
}
function progress_stop() {
clearTimeout(progressTimer);
progress_clear();
}
//progress_update(); // start progress bar
</script>
</DIV>

本回答被网友采纳

请问,如何在模拟计算的时候显示进度情况(VB.NET编程),我的代码如下...
ProgressBar1.step 设置下增量的数值,就是你需要进度条一格走多少数量,应该类似你的Progress 这个变量吧 最后,执行PerformStep ProgressBar1.step =Progress ProgressBar1.PerformStep()

关于VB.NET进度条的实例
首先要在窗体中载入以下控件: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....

vb.net 如何用进度条显示数据查询进度?
多线程其实比你想象的简单,你计划操作步骤,打比方说我们处理一个文件,用进度条来显示进度。我们可以定义解压他进度为5%,解密文件后哦进度完成20%,读取数据后进度完成30%,重新整理插入数据后进度完成60%,再加密,进度为80%,再压缩进度为90%,再发送进度为95%,删除历史记录结束动作进度为100%。...

VB中如何添加进度条表示一事件
既然你都说程序已经完成了那么只是加一个进度条吧其实也很简单,首先添加了进度条的控件加窗口的某一个位置然后在你的程序代码当中加入进度条名称.value=(1-100之间的数字)用一个最愚蠢的方法,因为你说你对进度条不熟悉所以用这个方法就是最好的了因为value的属性就是当前值,也就是当前进度值那么在...

VB中在程序计算过程中显示进度条怎么实现?
计算开始时,隐藏进度条,要知道计算的总数,把这个总数设置为进度条的MAX属性,计算过程中,计算了多少,进度条的VALUE属性就设置为多少,当进度条的进度完成后,隐藏进度条

关于VB.NET中进度条使用问题
VB.Net中提供了ProgressBar控件,用于显示进度条 设置ProgressBar的Minimum和Maximum属性为循环的起始和终止数值 然后在代码的循环体中计算当前循环的进度,然后设置进度条的Value属性,将进度显示在进度条上

VB中如何为事件设进度条显示?
' 计算出当前进度 ProgressBar1.Value = A * ProgressBar1.Max \\ Mx DoEvents End If Next A ProgressBar1.Value = ProgressBar1.Max ' 最后, 进度=进度条最大值.MsgBox C End Sub 你试运行的循环数量大 程序可能会有点慢, 要等他一下才看到效果,或者把内循环设置成 100 效果会好一点 ...

如何在VB窗体中加入进度条?
首先,你要加载这个部件,选择工程--部件,再选择Microsoft Windows common controls6.0控件,加载,这时ProgressBar就可以使用了 例子:在窗体上添加Timer1,command1,ProgressBar1,Label1控件 再添加如下代码:Private Sub Command1_Click()Timer1.Interval = 1000 ProgressBar1.Value = 0 Timer1.Enabled...

VB:如何在循环中加上进度条
这里的 PB1 就代表进度条控件 private sub form_load() pb1.max=254 '<--- 以你的 ping 的最大值做 pb1 的最大进度值 end sub Private Sub Command2_Click() If Right(Text1, 1) = "*" Then '当文本框,也就是IP输入框最右边的一个字符是 * 的时候 Dim i As Integ...

请问VB:如何在循环中加上进度条
* 的时候 Dim i As Integer Dim a As String For i = 1 To 254 '循环 从 1~254 a = Left(Text1.Text, Len(Text1.Text) - 1)Text1.Text = a & i cping.Ping Text1 'ping过程NextEnd IfEnd Sub但是等它扫描完要太久了,所以希望有个办法给这个循环加进度条,显示进度。

相似回答