WinForm解决UserControl自定义控件闪烁的问题

1 篇文章 0 订阅
1 篇文章 0 订阅

今天无意中看到了这个的解决方法,我的项目是10年做的一个监控类的东西,使用的WinForm开发。其中使用到了自定义控件UserControl;界面上有自己做的地图,地图上使用了自定义控件用来显示状态,但是当拖动地图的时候就会出现闪烁的问题。这个一直困扰我,直到项目结束的时候都没能处理好,只能按照平常的双缓冲方式解决。

今天无意中看到了一个解决方法,于是就把原来的项目拿出来实验了一下,确实有改善,因为以前的效果是拖动的时候会出现一层一层的效果,现在不会了,但是现在会有一下闪白的效果,如果能把这个也解决的话,就真的完美了。

解决方法是参照下面网址中的内容:

原帖地址:http://www.dotblogs.com.tw/rainmaker/archive/2012/02/22/69811.aspx

主要就是重写UserControl和Form的CreateParams方法。

前端调用UserControl的窗体这样写:

1
2
3
4
5
6
7
8
9
protected override CreateParams CreateParams
{
     get
     {
         CreateParams cp = base .CreateParams;
         cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
         return cp;
     }
}

UserControl中的代码同样也需要重写,这样写:

1
2
3
4
5
6
7
8
9
protected override CreateParams CreateParams
{
     get
     {
         var parms = base .CreateParams;
         parms.Style &= ~0x02000000;  // Turn off WS_CLIPCHILDREN
         return parms;
     }
}

这样之后,效果有明显的改善。

http://luacloud.com/2012/winform-solve-the-problems-usercontrol-custom-controls-blinking.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值