| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 747 人关注过本帖
标题:关于doevnts
只看楼主 加入收藏
咖啡不加糖№
Rank: 1
等 级:新手上路
威 望:1
帖 子:97
专家分:0
注 册:2005-8-18
收藏
 问题点数:0 回复次数:6 
关于doevnts

谁对VB中doevnts比较清楚,能不能具体解释一下,具体用法是什么?

搜索更多相关主题的帖子: doevnts 用法 解释 
2006-01-14 11:50
leon2
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:731
专家分:0
注 册:2005-3-18
收藏
得分:0 

如果你的程序代码中有一个 Do...Loop 或 While...Lend 循环,且程序在这个循环的运行时间会令用户不耐烦的话,你可以考虑在循环中加上 DoEvents,它能将事件控制权暂时交还给系统,当程序退出循环后,再把控制权收回。例如:

Do
DoEvents
'循环代码
Loop

使用了 DoEvents 之后,你的程序在执行循环时,你就可以同时对你的程序做其他操作。如果不使用,那么程序在进行循环时,它看起来会像死机的样子。

2006-01-14 15:48
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
收藏
得分:0 
严重同意2楼

而且,提醒你当循环次数比较多的时候,一定要加这个,这是个好习惯

此人已消失
2006-01-14 16:25
咖啡不加糖№
Rank: 1
等 级:新手上路
威 望:1
帖 子:97
专家分:0
注 册:2005-8-18
收藏
得分:0 

谢谢2楼的


编程无捷径 努力固我在 の). ─ ﹏淚;沒有顔Se.
2006-01-16 10:57
xinfresh
Rank: 4
等 级:贵宾
威 望:13
帖 子:594
专家分:0
注 册:2006-1-13
收藏
得分:0 

形象一点说,比如你的程序运算量比较大,n秒种之内如果没算完,程序是不会响应其它信号的,比如就不能移动窗体,加了这个函数就可以了


E-mail:xinfresh@QQ:383094053校内:http:///getuser.do?id=234719042
2006-01-16 11:15
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
这是我在网上找到的唯一跟 DoEvents 相关的资料!

VB 中有用的 DoEvents 函数
有很多程序员都不了解VB中的DoEvents函数。

DoEvents函数可以临时返回控制器给操作系统,并允许它完成其他可能发生的事件。 当一个程序的代码需要花很长的时间去执行,比如在一个复杂的数学计算的时候,你需要运用DoEvents函数。在你代码适当的位置调用DoEvents函数,能够改变程序响应的时间。
这里有一个例子:

在VB里创建一个标准的EXE文件并放置一个CommandButton和一个TextBox,然后,将下面的代码放入CommandButton的单击事件处理程序中:

Private Sub Command1_Click()
Dim i As Long
Dim j As Long

For i = 1 To 100000
Text1.Text = i
'DoEvents
For j = 1 To 100000
Next
Next
Text1.Text = "Done"
End Sub

你可以发现这个程序中有嵌套式循环,循环将持续几秒钟。每次,外部循环反复执行I 的值显示在text box中。当循环结束时,Done也显示出来了。在你运行这个程序的时候究竟发生了什么呢?然而,text box不会改变直到Done显示出来。问题在于在执行循环的时候系统非常繁忙,而循环语句中的I要显示在text box里面,这延迟windows队列。当循环完成以后,所有的请求都被执行。 现在在Text1.Text = i后调用DoEvents函数。当你运行程序的时候,你会发现text box记下了i的值。调用DoEvents函数可以释放系统内存来完成其他请求,然后将控制器返回给VB程序。 虽然调用DoEvents函数是以速度为代价,但是可以让程序有时间执行其他的事件,这个代价是值得的。

我的msn: myfend@
2006-01-16 11:51
moshen62
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-1-12
收藏
得分:0 
这里我要说一点
运行 DoEvents 的时候要注意 否则窗体关闭的时候程序仍在进程里
所以在运行有DoEvents参与的循环中就要设置不能关闭窗体

Private Sub Form_Unload(Cancel As Integer)
If mDoEven = True Then
Cancel = 1
Exit Sub
End If

End Sub


或者强制退出循环再退出程序

Private Sub Form_Unload(Cancel As Integer)
If mBlnDoEven = True Then
mblnExitDoEven = False
Cancel = 1
Exit Sub
End If

End Sub

2006-01-17 11:08
快速回复:关于doevnts
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028416 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved