可能重复:
如何暂停控件及其子项的绘制?
Winforms 双缓冲
我有一个表格,它绘制了一堆用户定义的控件(其中 81 个),每个控件都包含另外 10 个控件(总共 8,100 个)。这一切似乎都是按顺序绘制的(大约需要 1 秒左右)。
我已经查看了这 两个问题,并遵循了 ier 建议(this.DoubleBuffered = true
在表单和自定义控件以及SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
表单上设置,但这似乎没有做任何事情。
有没有办法保存表单的绘制函数,将其保存在委托中,交换虚拟函数,以便表单根本不会重绘,然后将真实函数放回并触发它。
我认为有一种更标准的方法可以做到这一点,但我找不到它(它不是SuspendLayout
/ResumeLayout
那些只处理布局逻辑的)。
我怎样才能做到这一点?