winform 自定义控件闪烁问题极为让人头疼,在网上搜索了很多方法,最后总算是勉强解决,但老实说效果还不是很好。
首先第一种方法:
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true); this.UpdateStyles();
网上见到的最多的就是这个方法,但基本上没有看到什么效果。
第二种方法:
在自定义控件中添加的:
protected override CreateParams CreateParams { get { var parms = base.CreateParams; parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN return parms; } }
在调用自定义控件的窗体内添加的:
protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED return cp; } }
第二种方法解决了我的问题。不过看起来还是很死板,只能说是勉强解决了。而且因为在调用自定义控件的窗体内添加的方法的关系,窗体上其他控件的重绘多少有点儿问题。后来我把这个方法去掉了,发现值需要在自定义控件内添加方法貌似也没什么问题。
希望以后能有更好的方法解决自定义控件不停闪烁的问题。