重绘闪烁这个问题困扰我一个礼拜了。今天终于找到了解决办法。
首先在构造函数中添加以下语句
SetStyle(ControlStyles.ResizeRedraw | ControlStyles.Opaque, true);
在Paint事件函数中或者在OnPaint函数中new 一个Image在利用Graphics .FromImage(Image)得到一个新的Graphics 对象。
使用该对象在Image中绘制好后。在使用PaintEventArgs 中的Graphics的DrawImage(image)函数绘制到控件区域上即可。
但是,这种方法,在使用重写OnPaintBackground时,将ControlStyles.Opaque设置为true的话,会使OnPaintBackground无效。