通过索引设置Treeview.SelectedNode(List <int>)

时间:2019-02-25 20:09:18

标签: c# winforms treeview

我想通过设置一个int List来设置TreeView.selected节点,但是我不知道如何设置childNodes。我的自定义控件中包含以下代码:

 private void SetSelectedNode()
    {
        if (MySelectedNodeIndexes == null) return;

        for (int i = 0; i < MySelectedNodeIndexes.Count; i++)
        {
            this.SelectedNode = this.Nodes[MySelectedNodeIndexes[i]];

        }            
    }

这只会设置节点,但会设置第一个信号。但是第二个问题应该设置this.SelectedNode.Nodes [MyselctedNodesIndexes中的第一个条目] .SelectedNode。等等。

如果MySelectedNodeIndexes包含{2,4,7,1},我希望所选节点为: this.Nodes [2] .nodes [4] .nodes [7] .nodes [1];

我不知道该怎么做?预先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用for循环在输入索引列表中查找节点。例如:

TreeNode GetNodeByIndexPath(TreeView treeView, int[] indexPath)
{
    var nodes = treeView.Nodes;
    TreeNode node = null;
    for (int i = 0; i < indexPath.Length; i++)
    {
        node = nodes[indexPath[i]];
        nodes = node.Nodes;
    }
    return node;
}

示例

var path = new int[] { 1, 1, 1 };
treeView1.SelectedNode = GetNodeByIndexPath(treeView1, path);