积极答复者
继承于.net2.0 中的System.Windows.Forms.ListView的自定义控件,在IE中使用时,并设置this.DoubleBuffered = true;了,但还是闪烁,请问大家有什么好的解决办法?

问题
答案
-
您好,
form有加入以下的code嗎?protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED return cp; } }
How to fix the flickering in User controls
- 已标记为答案 [李志强] 2014年2月26日 7:20
-
在你的控件的构造函数中添加:
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer, true);
UpdateStyles();宿主你的控件的控件中也要做这些处理。
为了找到究竟是哪个控件没有正确解决闪烁问题,我建议你按照控件的父子层级,给每个控件设置不同的背景色。然后你改变整体大小时出现闪烁后就能识别出是哪个控件的背景色被重绘了。
- 已标记为答案 [李志强] 2014年2月26日 7:19
全部回复
-
您好,
form有加入以下的code嗎?protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED return cp; } }
How to fix the flickering in User controls
- 已标记为答案 [李志强] 2014年2月26日 7:20
-
在你的控件的构造函数中添加:
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer, true);
UpdateStyles();宿主你的控件的控件中也要做这些处理。
为了找到究竟是哪个控件没有正确解决闪烁问题,我建议你按照控件的父子层级,给每个控件设置不同的背景色。然后你改变整体大小时出现闪烁后就能识别出是哪个控件的背景色被重绘了。
- 已标记为答案 [李志强] 2014年2月26日 7:19