最近从师兄手上接了一个C#的项目,需要用到MDI窗体,可是每当我显示子窗体的时候会有一次“闪烁”,很明显,看起来非常不爽,查找许久,知道是每次在show()子窗体的时候都会调用子窗体构造函数重绘窗体,其中需要将子窗体的尺寸调整到我在程序中设置的大小,无论我这样设置,这个窗口大小变化总会在show()的时候显示出来,我试过网上说的设置双缓冲、先隐藏窗体等启动之后再显示、借助定时器设置窗体的opacity属性,可是问题依旧,没有任何变化,一个偶然的机会找到了微软的MSDN论坛,发现遇到这个问题的哥们儿还不少,各种国家的程序员都有,其中一个哥们提供了一种一劳永逸的解法,彻底的解决了我的问题,天降救世主啊,为了这个问题我茶饭不思了好多天,现将方法分享一下,网上有很多人都有遇到这个问题,可是这是我唯一看到的解法,值得各位码农收藏啊,原文网址如下,谢谢这位美国小伙子:

http://social.msdn.microsoft.com/forums/en-US/winforms/thread/aaed00ce-4bc9-424e-8c05-c30213171c2c/

解决办法很easy:

将以下代码块加在父窗体中的任意位置

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/lijiu/p/3832132.html

C#解决MDI窗体闪屏的方法相关推荐

  1. win10打开计算机闪屏,教你一个解决win10开机闪屏的方法

    win10系统,是目前拥有用户基数相对较多的一个电脑系统,win10系统的用户们在享受win10高性能带来的快感的同时,也遭受到了一些问题.而最近,就有一部分用户就遇到了win10开机闪屏的问题,这相 ...

  2. win10更新后闪屏处理方法

    win10更新后闪屏处理方法 在我的电脑上处理成功了,但是中途没有拍照,我把详细过程说一下. 按下 Ctrl+Alt+Delete ,出现任务管理器选择的界面 一直按着 Shift,同时点击右下角 关 ...

  3. 解决windows电脑蓝屏的方法

    解决90%Windows电脑蓝屏的方法 夜半随风听雨14小时前电脑蓝屏代码大全及解决办法合集代码 含意0 0x00000000 作业完成.1 0x00000001 不正确的函数.2 0x0000000 ...

  4. 电脑一开机就蓝屏怎么解决?哪种蓝屏修复方法更方便?

    电脑一开机就蓝屏其实是非常的烦恼的,系统都进不去,这点就很难解决,难住了很多电脑小白,其实造成开机就蓝屏的因素是有很多的,我们需要一个个去分析去测试,下面我们一起来了解一一下电脑一开机就蓝屏怎么解决 ...

  5. iOS启动屏 ➕ 闪屏的方法

    转载自:http://www.starming.com/index.php?v=index&view=21 在- (BOOL)application:(UIApplication *)appl ...

  6. java做台球时老是闪屏_电脑老是闪屏的原因和解决办法

    电脑老是闪屏是怎么回事?有网友吐槽自己的电脑开机后就一直在不停地闪烁.其实电脑闪屏一般指电脑显示器上的显示问题,电脑在运行过程中,屏幕画面出现闪烁或不规则闪动,有时会出现横条线和竖条线.那么电脑闪屏怎 ...

  7. Android一种实现夜间模式方式,同时解决调用recreate() 时闪屏问题

    最近项目中要实现夜间模式,调研了几种Android的夜间模式实现方式,都是需要动态的改变ui界面引用到color.drawable等资源文件.由于这个项目是迭代了比较多版本的,ui界面比较多,项目也比 ...

  8. 计算机进到系统闪屏没有桌面,电脑闪屏了?几个步骤可以轻松解决

    在使用电脑的时候你有没有遇到过电脑屏幕突然闪屏的情况呢?关于电脑闪屏的现象在日常使用中也常有发生,这种现象一般是我们电脑显示器的显示问题,很多用户都会认为是电脑运行速度太过缓慢的原因,其实并不是这方面 ...

  9. win10间歇性闪屏_win10电脑频繁闪屏刷新怎么解决

    win10电脑频繁闪屏刷新怎么解决?闪屏就是我们在使用电脑的时候屏幕画面出现闪烁或不规则闪动,遇到电脑频繁闪屏刷新的问题而困扰时,请来看看下面的解决教程吧. 又出现win10电脑频繁闪屏刷新的问题了, ...

最新文章

  1. String中的“equal方法”和“==”
  2. 玩转Python? 一文总结30种Python的窍门和技巧!
  3. __bridge,__bridge_retained,__bridge_transfer
  4. react 遍历对象_React 和 Vue 之间的相爱相杀
  5. Django视图层:URL的反向解析(主路由include之namespace,子路由之name,模板标签{%url%},视图reverse()函数,反向解析示例,URL命名空间
  6. 808协议与php通讯,车载808协议对接、交通部794对接、部标808协议809协议对接
  7. 团队作业—第二阶段08
  8. Mac 下载并使用 Adobe Audition CC 2019 分离 人物语音和背景音乐
  9. linux入门生信,优秀学员的学习方法展示
  10. java 001 002_java笔记0x002:操作符
  11. php电子备课系统,电子备课-华思信息-智慧校园-智慧班牌-智慧课堂-智慧教育整体解决方案...
  12. python毕业设计作品基于django框架 二手物品交易系统毕设成品(2)网站功能
  13. Lync学习资料分享
  14. mean shift聚类matlab,机器学习:Mean Shift聚类算法
  15. android 谷歌室内定位,打造室内导航 谷歌发布WifiRttScan App测试室内定位
  16. JavaEE的RESTful标准技术JAX-RS,jersey-client客户端使用介绍【享学Java】
  17. Python案例分析之客户信贷预测模型
  18. 如何用一张照片证明你是老网民?
  19. 交叉编译zlib,libpng
  20. 菜鸟程序员试用期指南,职场新人必备法则

热门文章

  1. Windows下PowerShell监控Keepalived
  2. Struts2文件上传与下载
  3. .txt文件改成.bat为什么没有反应
  4. Android Lint简介
  5. iphone--使用NSUserDefaults存储数据
  6. ES 6理解 let
  7. cocos JS 定时器
  8. c3p0三种配置方式(automaticTestTable)
  9. CocoaPods 添加第三方库报错
  10. 整理LVS架构压力测试工作