Winform提示窗口的动画显示问题

ganguozai 2014-01-23 12:50:19
各位大侠,小弟在此请教一个问题。
参考MSDN中ImageAnimator.Animate方法的帮助,自己用VS2005基于相关信息测试一个Winform窗口中显示gif动画的案例,并运行通过。
遂产生一个想法,新增一个名为WaitingForm窗体(无边框),包括1个Label控件和一个多行属性的TextBox控件,并添加了2个用于更新标签和文本框内容的公有方法,并加前的动画处理逻辑,期望在主窗口中执行耗时操作时,能够顶层弹出该等待窗口,并依据传入的字符串和方法显调用达到提示用户当前正在执行的步骤,并在处理完后关闭等待窗口。
现在的程序运行结果是:文本提示信息可以更新,但是动画却无法显示。即便用其它方式,如用PictureBox控件显示动画图像,并定期对其调用Refresh方法仍无济于事。除非在更新标签或文本框内容的方法内部调用PictureBox控件Refresh方法,可以显示动画,但是这样又有新的问题:动画更新依赖文本数据更新,一旦文本更新间隔长,动画也就不动。
期望的运行结果:动画帧更新能独立于文本更新,即文本数据不变,只要等待窗口不关闭,动画应能持续正常显示。
...全文
371 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ganguozai 2014-01-24
  • 打赏
  • 举报
回复
坚持思索并尝试了两天,决定放弃,因为等待处理的动画帧更新独立于文本更新的控制逻辑放在主线程创建的父窗口就不存在任何问题。如果将来需要美化界面来提高友好性,再采用前面的迂回策略改造。 结贴了!
  • 打赏
  • 举报
回复
说了这么多····为毛不上图?
tenhilltree 2014-01-23
  • 打赏
  • 举报
回复
ganguozai 2014-01-23
  • 打赏
  • 举报
回复
通过debug调试,发现是跨线程访问UI原因造成。 然而,查了多种资料也尝试了多种方案(包括使用自定义委托,然后结合控件的Invork方法更新动画)仍不起作用。因此,本人最初的想法是否本身在.NET 2.0环境下就存在问题,或者思路没找准? 让人沮丧啊! 跪求大牛支招!
ganguozai 2014-01-23
  • 打赏
  • 举报
回复
期望的效果类似360安全卫士的“电脑体检”的效果,左边持续更新动画帧,右边更新检查任务信息。 唯一的区别是:上述效果在同一个窗口中(当然,安全卫士是用C++开发的界面),而俺为了提升等待处理的复用性,将其相关UI和逻辑隔离到一个独立的Winform窗体中。 截止目前,文本更新及等待窗口的打开和关闭功能非常稳定,想再加个转圈圈的动画,却卡壳了,呵呵~ 期待专家们指点!

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧