c# – 如何修复嵌套winform控件闪烁问题

前端之家收集整理的这篇文章主要介绍了c# – 如何修复嵌套winform控件闪烁问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在使用一个使用相当复杂的嵌套winform控件结构的程序,用户可以根据用户进行某些选择而动态更改.关于控件的具体布局的更多细节将是广泛的这个问题.

当进行选择时,对由用户控件控制的底层模型进行了大量更新.这将导致显示的控件的尺寸/位置/可视性的一系列相应的更改.所有这些变化都会导致屏幕上控件的剧烈闪烁.我需要以某种方式解决这个问题,所以每当用户选择屏幕时,基本上都会冻结,直到所有的控制更新完成.

我试图在许多不同的地方和方式使用Control.SuspendLayout / Control.ResumeLayout方法,我无法消除疯狂的闪烁.我以为在更改过程中挂起根控制的布局可以解决问题,但是看起来这个SuspendLayout在子控件更改时不会有帮助.

我需要使用其他方法而不是SuspendLayout吗?有没有办法我可以调试SuspendLayout看看为什么它似乎并没有被级联到所有的子控件?

解决方法

Suspend / ResumeLayout不是您的问题.这只会暂停自动布局,即由锚和Dock属性触发的种类.双重缓冲也无法解决您的问题,这只会抑制每个控件中的闪烁.你真正的问题是你同时更新太多的控件,每个控件都会轮到自己来绘制,这需要时间.

你需要的是一种不同的双缓冲,合成.查看this thread中的解决方案是否解决了您的问题.

猜你在找的C#相关文章