40分求教! 镜头加载完成的判断方法!


40分求教!!!★★★★★★ 画面加载完成的判断方法!★★★
WINFORM的程序


窗体上有很多控件(包括用户控件),里面有GRID,图表等内容.


这是一个改造的程序.它原本取数据显示在控件里的处理是写在SHOWN事件里.这个不能改.


现在需要把这个画面SHOW出来后,将画面上内容打印(按大窗体的大小屏幕截图),然后再CLOSE掉它.


问题是:截图时,画面上很多东西还没显示完全,像正在绘制的程度就截屏打印了.


怎样判断画面上的内容都显示完全 这个时候再截屏打印..




这个讨论

Triggering an event after a Winform layout is complete

mplete

在FormActived或者最后加载完的程序结束后,设置一个bool值,再根据这个值去截图。

这是一个改造的程序.它原本取数据显示在控件里的处理是写在SHOWN事件里.这个不能改.


所以我的打印是放在SHOWN事件的最后.


楼上说的在ACTIVED里做标记 ACTIVED事件比SHOWN还要早啊.那时画面还啥都没有.


"加载完的程序结束",这个就是在SHOWN里啊,截屏打印就是放在"加载完的程序结束"后啊..


还有,你说的设个BOOL值,根据这个值去打,问题是"根据这个值去打"的位置在哪




看看这个讨论能不能帮你:


SHOWN事件一般是最后触发的,可以考虑停顿一个时间再将画面上内容打印

对方程序不能修改基本没有办法,加上延迟看看吧。

TO findcaiyzh 

正在看这个讨论


TO caozhy

如果把取数据的处理由SHOWN移出来,允许的话,移到哪里能解决呢,移到LOAD里

TO wo8352490123 

听顿一个时间总感觉不够精确,,定个3秒吧,它又可能网速慢4秒才出来,有时快呢,1秒不到就出来,也要停3秒


我估计客户对这个停顿方法是不会接受的,这个方法放在最后其他方法都不行才去尝试

看了那个英文的讨论


把Application.DoEvents() 放在取数据后,打印前.


似乎好象可以...再试下看.....

<fieldset> <legend class="font_bold"> 引用: </legend>

  看了那个英文的讨论

把Application.DoEvents() 放在取数据后,打印前.

似乎好象可以...再试下看.....

</fieldset>



或者 me.refresh  之后再 Application.DoEvents()  再打印  应该就行了

相关链接

VBScript .net 程序开发

蛋疼的路人甲 11 years ago

Your Answer