以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 用了StopRedraw点击目录树节点时卡死的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=107684) |
-- 作者:happyft -- 发布时间:2017/10/7 19:06:00 -- 用了StopRedraw点击目录树节点时卡死的问题 因为某种条件禁止勾选目录树节点,用了下面的代码在勾选后立即取消勾选 \'e.Form.StopRedraw() \'tr1.StopRedraw() \'tr2.StopRedraw() ....... If e.Node.Checked = True Then e.Node.Checked = iif(e.node.checked,False,True) \'恢复复选状态 \'e.Node.Checked = false \'用这句结果也是一样 MessageBox.Show("只有选中按部门角色设置权限时才能勾选表单或流程!","提示") Return End If If e.Node.Checked = false Then msgbox(11) ...... end if \'e.Form.ResumeRedraw() \'tr1.ResumeRedraw() \'tr2.ResumeRedraw() 上面的代码如果用的stopRedraw后,点击节点会卡住半天,如果不用则没有问题,但会有屏闪问题 如果用stopRedraw后,取消中间的Return又没有问题,但就是导致If e.Node.Checked = false Then 里面的代码还要执行 是什么原因? 谢谢! |
-- 作者:有点甜 -- 发布时间:2017/10/7 20:07:00 -- 你return之前,一定要写ResumeRedraw |
-- 作者:HappyFt -- 发布时间:2017/10/7 21:23:00 -- 原来是这个原因啊,那不是每个一Return前用Resumeredraw,之后又要用Stopredraw,如果return有几处,不是很繁琐? 谢谢!
|
-- 作者:有点甜 -- 发布时间:2017/10/7 21:27:00 -- Stopredraw 和 Resumeredraw 要配套使用,stop以后一定要resume,不然就有问题。
不然,你不要用return,你用if else做判断,使代码最终执行 Resumeredraw 呗。 |