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 に答える