最近使用 Dev TreeList,在添加4W行记录时,居然花了10多秒,测试发现 使用AppendNode 和 Node.SetValue,会非常耗时!在添加或更新时,虽然已使用了BeginUnboundLoad 和 EndUnboundLoad. 最后换成使用DataSource,速度就非常快了.
创建对象时,对象中有一个Image属性,是从ImageList.Images中取图片,测试发现这个也非常耗时,换成自定义的Images集合快了很多。应该是
每次访问ImageList.Images[i] 会创建新的Image对象造成的。
通过Node.SetValue更新StateImage很慢,于是换成了自定义了一列,通过更新DataSource数据源后,再调用 TreeList.Refresh实现。
TreeList的DataSource我绑定的是BindingList<T> 集合,更新T对象的某个属性后(该属性为Image类型),测试发现只有调用TreeList.Refresh界面才能正常更新。调用其它方如 TreeList.Update ,TreeList.Invalidate等都不保证界面能得到正确的更新.
经过以上几骤改造后,一次性加载4W记录(非虚拟模式)1秒之内就完成了.