博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#窗体加载和控件加载不同步导致控件闪烁
阅读量:6680 次
发布时间:2019-06-25

本文共 1110 字,大约阅读时间需要 3 分钟。

窗体加载和控件加载不同步导致的控件闪烁现象:

// 代码块加在父窗体中的任意位置,解决窗体加载和控件加载不同步导致的控件闪烁问题
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;
                return cp;
            }
        }
 原理很简单,引用以下原话:
     A form that has a lot of controls takes a long time to paint.  Especially the Button control in its default style is expensive.
 Once you get over 50 controls, it starts getting noticeable.  The Form class paints its background first and leaves "holes" where the controls need to go.  
Those holes are usually white, black when you use the Opacity or TransparencyKey property.  Then each control gets painted, filling in the holes.  
The visual effect is ugly and there‘s no ready solution for it in Windows Forms.  Double-buffering can‘t solve it as it only works for a single control, not a composite set of controls.
 I discovered a new Windows style in the SDK header files, available for Windows XP and (presumably) Vista: WS_EX_COMPOSITED.
 With that style turned on for your form, Windows XP does double-buffering on the form and all its child controls. 

转载于:https://www.cnblogs.com/qiantao/p/9411431.html

你可能感兴趣的文章
不管你信不信 大数据正在遭遇尴尬!
查看>>
Android 反编译[持续更新]
查看>>
130行代码写一个模板引擎
查看>>
计算机编码
查看>>
Redis应用-位图
查看>>
前端工程不了解?带你踩坑加爬坑。
查看>>
分享一个简单的画刷动画效果:
查看>>
新年伊始也来谈谈Webfont
查看>>
(0,fn)()的执行原理
查看>>
地址栏中输入url到显示出网页间的过程
查看>>
H5 分层屏幕适配
查看>>
Django笔记---环境搭建
查看>>
[译]理解JS中的闭包
查看>>
推荐:聚合局域网服务的扫描插件 LN2(蓝图)
查看>>
自己总结的手写代码片段
查看>>
系统SDK介绍-01
查看>>
copy strong weak assign的区别
查看>>
SpringMVC运行原理
查看>>
Eureka简介以及工作原来
查看>>
iOS 后台语音播报功能开发过程中的那些坑
查看>>