当我们的项目优化UI我ListView中发现真的很奇怪提升了,不明白它从何而来。的WinForms ListView和TreeView控件:奇怪的性能问题
简单增加5000元到ListView控件(查看:列表) - 3815毫秒:
for (int i = 0; i < 5000; i++)
listView1.Items.Add((Guid.NewGuid().ToString()));
用的BeginUpdate()+ EndUpdate() - 2317毫秒:
listView1.BeginUpdate();
for (int i = 0; i < 5000; i++)
listView1.Items.Add((Guid.NewGuid().ToString()));
listView1.EndUpdate();
带隐藏()+显示() - 163ms(无错,超过10倍):
listView1.Hide();
for (int i = 0; i < 5000; i++)
listView1.Items.Add((Guid.NewGuid().ToString()));
listView1.Show();
风格也改变了。 而不是2列现在我有4.
为什么这种方式是如此之快? 此外,为什么从隐藏的ListView开始(可见:false),并在群体后显示它不具有相同的性能提升?
TreeView的是不同的。简单的添加5000个节点 - 2130毫秒:
for (int i = 0; i < 5000; i++)
treeView1.Nodes.Add((Guid.NewGuid().ToString()));
带隐藏()+展() - 1048毫秒:
treeView1.Hide();
for (int i = 0; i < 5000; i++)
treeView1.Nodes.Add((Guid.NewGuid().ToString()));
treeView1.Show();
用的BeginUpdate()+ EndUpdate() - 291毫秒:
treeView1.BeginUpdate();
for (int i = 0; i < 5000; i++)
treeView1.Nodes.Add((Guid.NewGuid().ToString()));
treeView1.EndUpdate();
将您的项目添加到列表中,然后调用'AddRange(...)'也应该手动指定您的列,而不是信任控件来动态分配它们。 – Seph 2012-02-07 10:55:24