以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]执行代码总是等全部执行完毕才显示? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=30284) |
-- 作者:qq121454970 -- 发布时间:2013/3/24 23:20:00 -- [求助]执行代码总是等全部执行完毕才显示? Dim p AsWinForm.ProgressBar
上段代码在执行的时候会实时显示,为什么下一段的显示值不会变呢? For i As integer = 0 To 100 e.Form.Controls("Label").Text = i End
If |
-- 作者:qq121454970 -- 发布时间:2013/3/24 23:26:00 -- 想做一个动态显示进度的Label 文本 ,弄不出来,唉 |
-- 作者:hui986 -- 发布时间:2013/3/25 2:41:00 -- 应该是如下的原因
DoEvents语句 新建一个窗口,增加一个标签和一个按钮,按钮的Click事件设为: e.Form.Controls( "Label1").Text = "正在增加行,请稍后..."CurrentTable.AddNew(10000) e.Form.Controls("Label1").Text = "已经完成." 打开窗口单击按钮,按道理在增加行的时候,标签应该显示“正在增加行,请稍后...”,可实际上标签只是在增加行结束的时候,显示“已经完成.”。这是为什么呢?这是因为Windows是多任务的,绘制控件属于优先级别较低的任务,直到我们执行完所有的代码,Windows才会去绘制控件,从而出现上述异常。 有什么办法让绘制控件的代码即刻生效呢?有,我们只需在代码中间插入一行: Application.DoEvents 即刻暂停代码的执行,重新绘制控件后,继续执行代码。 所以我们原来的代码应该改为: e.Form.Controls( "Label1").Text = "正在增加行,请稍后..."Application.DoEvents() CurrentTable.AddNew(10000) e.Form.Controls("Label1").Text = "已经完成." |
-- 作者:客人 -- 发布时间:2013/3/25 8:52:00 -- 谢谢 |
-- 作者:qq121454970 -- 发布时间:2013/3/25 22:22:00 -- 效果非常好,谢谢 |