0

这听起来很简单,但它就像一个洋葱——剥皮时有很多层。我有自己的对象类的层次结构 - 有点像表单上的组件,因为它们中的任何一个都可以有子级和父级。在顶部有一个根对象。其他代码管理此层次结构,并且可以随时创建、删除或重命名分支或叶子。我希望有一个树视图(某种,可能是虚拟的),它以这样一种方式提供这个层次结构的视图,以便可以有多个这些树视图,每个视图都根据需要从对象层次结构中绘制自己。

我已经有了一个使用 Delphi 的 TTreeView 的解决方案,但它依赖于在引发“已更改”标志并重建已更改的树视图分支时遍历层次结构。这很慢(我可以有超过 1000 个对象),我想要一种算法,它可以设法为单个对象插入或删除进行单个树视图更改。

这可能吗?

4

1 回答 1

1

当然,您可以检测到对象已被插入或删除并进行必要的更改。

例如,对于删除,找到与已删除对象关联的节点,然后将其删除。对于插入,找到与父对象关联的对象,然后在正确的位置插入一个新节点。

如果遍历树以查找与对象关联的节点时存在性能问题,那么您可以使用字典。

对于虚拟树视图,它更容易,因为您只需获取树视图即可反映对象结构。当进行更改时,您请求更新,这一切都会自然发生。

于 2011-05-08T19:10:11.747 回答