简体   繁体   English

按索引设置 treeview.SelectedNode (List<Int> )

[英]Set treeview.SelectedNode by index (List<Int>)

I want to set the TreeView.selected node by itterating a int List but I can't figure out how to set the childNodes.我想通过迭代 int List 来设置 TreeView.selected 节点,但我不知道如何设置 childNodes。 I have the following code in my custom control:我的自定义控件中有以下代码:

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

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

        }            
    }

This only sets the node but on the first itteration.这仅在第一次迭代时设置节点。 But the second itteration should set this.SelectedNode.Nodes[first entry in MyselctedNodesIndexes].SelectedNode.但是第二次迭代应该设置 this.SelectedNode.Nodes[MyselctedNodesIndexes 中的第一个条目].SelectedNode。 and so on.等等。

If MySelectedNodeIndexes contains {2,4,7,1} I want the selected Nodes to be: this.Nodes[2].nodes[4].nodes[7].nodes[1];如果 MySelectedNodeIndexes 包含 {2,4,7,1} 我希望选定的节点是: this.Nodes[2].nodes[4].nodes[7].nodes[1];

I don't know how to do this?我不知道如何做到这一点? Thanks in advance for the help.在此先感谢您的帮助。

You can use a for loop to find the node base on the input index list.您可以使用 for 循环根据输入索引列表查找节点。 For example:例如:

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;
}

Example例子

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM