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

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

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

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

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

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

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


------最佳解决方案--------------------
这个讨论
Triggering an event after a Winform layout is complete
http://*.com/questions/2005227/triggering-an-event-after-a-winform-layout-is-complete
------其他解决方案--------------------
在FormActived或者最后加载完的程序结束后,设置一个bool值,再根据这个值去截图。
------其他解决方案--------------------
这是一个改造的程序.它原本取数据显示在控件里的处理是写在SHOWN事件里.这个不能改.

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

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

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

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


------其他解决方案--------------------
看看这个讨论能不能帮你:

------其他解决方案--------------------
SHOWN事件一般是最后触发的,可以考虑停顿一个时间再将画面上内容打印
------其他解决方案--------------------
对方程序不能修改基本没有办法,加上延迟看看吧。
------其他解决方案--------------------
TO findcaiyzh 
正在看这个讨论

TO caozhy
如果把取数据的处理由SHOWN移出来,允许的话,移到哪里能解决呢,移到LOAD里?
------其他解决方案--------------------
TO wo8352490123 
听顿一个时间总感觉不够精确,,定个3秒吧,它又可能网速慢4秒才出来,有时快呢,1秒不到就出来,也要停3秒

我估计客户对这个停顿方法是不会接受的,这个方法放在最后其他方法都不行才去尝试
------其他解决方案--------------------
看了那个英文的讨论

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

似乎好象可以...再试下看.....
------其他解决方案--------------------
引用:
看了那个英文的讨论

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

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


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