SetStyle(
ControlStyles.OptimizedDoubleBuffer
| ControlStyles.ResizeRedraw
| ControlStyles.Selectable
| ControlStyles.AllPaintingInWmPaint
| ControlStyles.UserPaint
| ControlStyles.SupportsTransparentBackColor,
true);
将这段代码加到用户控件的构造函数中即可生效。
这段代码的主要功能是开启了双缓冲。
平时我以为开双缓冲只需要设置ControlStyles.OptimizedDoubleBuffer为true而已。
但是经过实践才发现,起关键作用的是OptimizedDoubleBuffer和AllPaintingInWmPaint两个。
当这两个都为true的时候。闪烁几乎消失。效果非常好。