当我们优化项目中的用户界面时,我注意到ListView中出现了非常奇怪的提速,而且不知道它从何而来。
只是简单地在listView(视图:列表)中添加5000个元素 - 3815毫秒:
只是简单地在listView(视图:列表)中添加5000个元素 - 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();
使用Hide() + Show() - 163毫秒(毫无疑问,比原来快10倍以上):
listView1.Hide();
for (int i = 0; i < 5000; i++)
listView1.Items.Add((Guid.NewGuid().ToString()));
listView1.Show();
为什么这种方式如此快速? 此外,为什么从隐藏的ListView (可见性:false) 开始,在填充后显示它并没有同样的性能提升呢?
TreeView是不同的。简单添加5000个节点-2130毫秒:
for (int i = 0; i < 5000; i++)
treeView1.Nodes.Add((Guid.NewGuid().ToString()));
使用Hide() + Show()方法 - 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