2

PopupContainerControl 内に TreeList があります。

TreeList は、フォームが使用されているコンテキストに応じて動的に設定されます。これは、実行時にノード リストが更新および変更されることを意味します。

私が抱えている問題は、TreeList がノード構造に加えられた最初の変更のみを表示していて、それ以降の変更を表示していないことです。

IVirtualTreeListData を実装するカスタム ノード クラスを使用しています。下に示された。

public class Node<T> : TreeList.IVirtualTreeListData
{
    public Node<T> Parent { get; set; }
    public List<Node<T>> Children { get; set; }
    public object[] Cells { get; set; }
    public T Object { get; set; }

    public Node(T t, Node<T> parent, object[] cells)
    {
        Parent = parent;
        Children = new List<Node<T>>();
        Cells = cells;
        Object = t;

        if (this.Parent != null)
            this.Parent.Children.Add(this);
    }

    public Node(Node<T> parent, object[] cells)
    {
        Parent = parent;
        Children = new List<Node<T>>();
        Cells = cells;

        if (this.Parent != null)
            this.Parent.Children.Add(this);
    }

    public void VirtualTreeGetChildNodes(VirtualTreeGetChildNodesInfo info)
    {
        info.Children = Children;
    }

    public void VirtualTreeGetCellValue(VirtualTreeGetCellValueInfo info)
    {
        info.CellData = Cells[info.Column.AbsoluteIndex];
    }

    public void VirtualTreeSetCellValue(VirtualTreeSetCellValueInfo info)
    {
        Cells[info.Column.AbsoluteIndex] = info.NewCellData;
    }
}

そのため、最初にフォームをロードするときに、次の呼び出しを行います。

_rootNode = new Node<MyResource>(null,null)
_treeList.DataSource = _rootNode;

その後、リソースが TreeList に読み込まれると、次のようになります。

Node<MyResource> newResourceNode = new Node<MyResource>(_rootNode,new object[]{"New Node"});
treeList.DataSource = _rootNode;
treeList.RefreshDataSource();
treeList.ExpandAll();

これにより、最初にヒットしたときにのみ TreeList 内のリソースが設定されますが、その後の変更は反映されません。

4

0 に答える 0