界面上有1600个自动创建的控件,form用了双缓存,但还是闪烁,该怎么处理
界面上有1600个自动创建的控件,form用了双缓存,但还是闪烁有个winform界面,我在一个panel上自动创建了1600
界面上有1600个自动创建的控件,form用了双缓存,但还是闪烁
有个winform界面,我在一个panel上自动创建了1600个label控件,界面刚show出的时候,或者先点其他程序,再点此页面时,此winform界面有重新刷新的过程。我在winform的构造函数里加了如下语句,但不管用,各位有无碰过类似问题?
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true);
我的开发环境是:vs2008,c#,xp
[解决办法]
顶 这个标题我看了半天 1600个 牛!!
[解决办法]
将多个控件添加到父控件时,建议在初始化要添加的控件之前调用 SuspendLayout 方法。将控件添加到父控件之后,调用 ResumeLayout 方法。这样就可以提高带有许多控件的应用程序的性能。
[解决办法]
.net 都这样的, 不闪就不是 .net 了
[解决办法]
自己绘制吧,用GDI+自己绘制吧,这样闪烁可能会比你用控件好些。
[解决办法]
帮忙顶下.正在处理有关的图形开发....从来没有接触过的哈.
[解决办法]
[解决办法]太强大了,这么多控件
[解决办法]强
[解决办法][解决办法]将多个控件添加到父控件时,建议在初始化要添加的控件之前调用 SuspendLayout 方法。将控件添加到父控件之后,调用 ResumeLayout 方法。这样就可以提高带有许多控件的应用程序的性能。
同意
[解决办法]GDI+没有更好的办法了
[解决办法]强人...
[解决办法]是自动在代码中添加的还是VS自动生成那样添加的?
[解决办法]用updatepanel
[解决办法]这么多....
[解决办法]窗体的双缓冲对其子控件是不起作用的。
[解决办法]楼主真强,1600个啊。太厉害咯
[解决办法]有点儿疯狂哦,C#解决这样的问题属实有点儿困难啊
楼上有两位仁兄推荐使用GDI+自己绘制,支持一下,这恐怕是唯一的解决办法了吧
[解决办法]在构造函数中加this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer, true); 这句话不行嘛
[解决办法]超过100个控件就自己画吧,不是自己GDI+吧
[解决办法]PANEL 替换,在隐藏的PANEL上绘完后,替换当前的PANEL
[解决办法]最简单的方法,先把Panel隐藏起来,然后都加载完了,数据填充好了,再显示Panel会好很多
[解决办法]曾遇到LZ同样的问题.
后用flash来做界面.效果很好.
[解决办法]嵌个web算了
[解决办法]个人认为这样的需求还是用自定义控件。从Control继承,创建一个集合,自己定义个对象保存你那些什么文本呀,颜色呀,其实就是替代Label,
然后按你需要的排列方式循环画出来。
防止闪烁的方法是只重画需要重画的区域
最好在你的Label对象中提供属性保持它自己的位置,这样当那个Label属性改变的时候你只需要重画那一小块,这样就不闪烁了。
我曾经处理过一个类似你这样的问题,用的就是这样的方法。
原来系统提供的Label控件肯定不适合你这样的情况,属性太多,继承太多,而且不能实现大面积的绘图控制。
像Flash这样的软件其防止闪烁的解决方案就是小区域重绘,没有变化的区域不需要重绘。
[解决办法]
太强了,如此,你只有像VS2008这样了,先启动加载form,form先隐藏,出一个正在加载的显示,加载完了,再form显示
[解决办法]
1600个label???
这软件谁用着不迷糊啊???
这需求谁做的?设计谁做的?
还是纯粹想验证C#的效率?