當我們的項目優化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