Mit*_*eat 24
在的WinForms,你可以简单地设置TreeView的.Sorted
属性True
.
当Sorted设置为true时,TreeNode对象按其Text属性值按字母顺序排序.在向排序的TreeView添加大量项目时,应始终使用BeginUpdate和EndUpdate来保持性能.更改现有节点的文本时,必须调用"排序"以求助于项目.
参考MSDN
为什么不创建继承自TreeView
和的新类TreeNodeCollection
?新TreeView
会使用新的TreeNodeCollection
,你可以覆盖Add()
的方法TreeNodeCollection
做你所建议.
该方法必须:1.找到要插入的正确位置和2.插入新节点.
最琐碎的实现将遍历集合,直到thisNode.value<=newNode.value<nextNode.value
.然后插入之前nextNode.Index
.如果使用不同的搜索算法,您可以看到性能提升,具体取决于集合的大小.(想到二进制搜索之类的东西.)
注意:您也可以只创建一个TreeNodeCollection
执行相同操作的扩展方法.然而,重写Add()
方法确保您TreeView
的总是排序.如果在AddIntoSorted()
调用之前尚未对排序方法进行排序,则仅创建扩展方法可能会导致未定义的结果.
归档时间: |
|
查看次数: |
15578 次 |
最近记录: |