我将此添加到窗体的构造函数代码中:
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
但是,当加载控件时,无论控件何时更改(窗体及其组件经常更改(需要更新)),它仍然显示难看的工件。
我需要做些什么?
这仅对表单本身有影响,而对子控件没有影响。如果您有很多人,那么他们轮流绘画自己的时间就会变得很明显,这会留下一个矩形孔,在该处控件将被填充,直到子控件将其旋转为止。
要解决这个问题,您需要对整个表单 和 控件进行双重缓冲。自Windows XP启用WS_EX_COMPOSITED样式标志以来,该选项就可用。将此粘贴到您的表单中以将其打开:
protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED return cp; } }
它根本无法加快绘画速度,但是延迟一段时间后,表格会吸附在屏幕上。消除可见的油漆瑕疵。真正解决延迟问题无需使用控件。通过使用OnPaint方法绘制“控件”并使OnMouseClick事件智能化用户单击了什么“控件”,您将执行哪些操作。