加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:42:33 所属栏目:百科 来源:网络整理
导读:我目前正在使用一个使用相当复杂的嵌套winform控件结构的程序,用户可以根据用户进行某些选择而动态更改.关于控件的具体布局的更多细节将是广泛的这个问题. 当进行选择时,对由用户控件控制的底层模型进行了大量更新.这将导致显示的控件的尺寸/位置/可视性的一
我目前正在使用一个使用相当复杂的嵌套winform控件结构的程序,用户可以根据用户进行某些选择而动态更改.关于控件的具体布局的更多细节将是广泛的这个问题.

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

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

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读