1

我目前有一个显示文件系统树的数据结构,它基本上是一个带有类似类型对象的数组列表的对象。我想在树视图中显示它,并且需要在树视图节点展开、折叠、选择等时运行一些代码。

我的问题 - 是否有一种设计模式或数据结构和树视图之间的耦合方法,每次用户选择某些东西时都不需要我在整个 DS 树中搜索所选节点?

目前,每次触发相关的树视图事件时,我正在搜索具有与所选节点相同的 Text 和 Tag 属性的节点的数据结构。我遇到的情况是,如果节点不是叶子,我必须去重新搜索它的父节点,我担心大树的性能

请记住,数据结构已经继承了一个对象,所以我不能简单地扩展 treenode 类。

任何帮助是极大的赞赏

4

1 回答 1

0

您仍然可以扩展 TreeNode,但使用组合添加一个额外的属性,该属性映射到该节点所代表的对象。

您还可以将子节点的逻辑移动到此树节点,而不是将其放在外面

public class DomainClass { /*...*/ }

public class DomainTreeNode: TreeNode
{
    public DomainClass Element { get; private set; }

    public DomainTreeNode(DomainClass element): base(element.Name)
    {
        Element = element;

        /* iterate on element's children and add them to the node's 
           Childs collection ...*/ 
    }

}
于 2013-05-09T13:45:56.657 回答