按索引设置 treeview.SelectedNode (List<Int>)
Set treeview.SelectedNode by index (List<Int>)
我想通过迭代一个 int 列表来设置 TreeView.selected 节点,但我不知道如何设置子节点。我的自定义控件中有以下代码:
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];
我不知道该怎么做?在此先感谢您的帮助。
您可以使用 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);
我想通过迭代一个 int 列表来设置 TreeView.selected 节点,但我不知道如何设置子节点。我的自定义控件中有以下代码:
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];
我不知道该怎么做?在此先感谢您的帮助。
您可以使用 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);