我有一个循环:
for (int i = 0; i < panel1->Controls->Count; ++i) {
Control^ ctl = panel1->Controls[i];
ctl->Location.Y = i*10;
}
如果我在 panel1 中有 200 或 300 个控件可以吗?或者如果我添加这个会更好:
if (ctl->Location.Y != i*10) ctl->Location.Y = i*10;
我只是不知道是否.NET 的控件无论如何都会重新绘制(这需要时间),或者它们会自动检查是否需要重新绘制(仍然相同的位置)
您可以像下面这样优化它以避免连续重新绘制:
panel1.SuspendLayout();
for (int i = 0; i < panel1->Controls->Count; ++i) {
{
// do reposition
}
panel1.ResumeLayout(false);
panel1.PerformLayout();
或
panel1.ResumeLayout()
@CodesInChaos:好点!它看起来是一样的,但事实并非如此。要使用
- ResumeLayout(false)/PerformLayout() 或
- 简历布局()
将影响结果的外观,如此处所述。