码:
private void panel1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(Pens.White,
e.ClipRectangle.Left,
e.ClipRectangle.Top,
e.ClipRectangle.Width - 1,
e.ClipRectangle.Height - 1);
base.OnPaint(e);
}
如何避免闪烁。上面是Panel中
panel1_Paint
事件的Paint
方法。谢谢。 最佳答案
默认情况下,某些Windows窗体控件未启用双缓冲。我不确定该面板是否是其中之一,但是尝试启用它也不会有什么坏处。
不幸的是,Control.DoubleBuffered
是受保护的,因此除非您从控件继承,否则必须依靠反射将其启用。
Control ctrl;
ctrl.GetType()
.GetProperty("DoubleBuffered",
BindingFlags.Instance | BindingFlags.NonPublic)
.SetValue(control, true, null);