Foxtable(狐表)用户栏目专家坐堂 → 主窗体上放了一个显示进度百分比的lable控件,不显示进度


  共有3334人关注过本帖树形打印复制链接

主题:主窗体上放了一个显示进度百分比的lable控件,不显示进度

帅哥,在线噢!
xxfoxtable
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1769 积分:16693 威望:0 精华:0 注册:2017/6/1 23:12:00
主窗体上放了一个显示进度百分比的lable控件,不显示进度  发帖心情 Post By:2018/7/26 19:25:00 [只看该作者]

主窗体上放了一个显示进度百分比的lable控件,不显示进度,当我在此代码后放msgbox测试,进度就显示出来了,是怎么回事?

 回到顶部
帅哥哟,离线,有人找我吗?
2900819580
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1347 积分:9817 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2018/7/26 19:36: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 =
"已经完成."


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/26 20:40:00 [只看该作者]


 回到顶部