[英]How to create Nested Loops in TreeNode C#
我写了一个添加树节点的嵌套循环,问题是索引从未增加到1 。
在“对于每个循环:在第一个父节点中没有更多子节点”的情况下,循环在索引j处停止,并且不返回索引i递增到1 。
for (int i = 0; i < 23; i++)
{
for (int j = 0; j < 23; j++)
{
foreach (var item in myDictionaryReconstructed)
{
if ("TreeNode: " + item.Key == treeView1.Nodes[i].Nodes[j].ToString())
{
treeView1.Nodes[i].Nodes[j].Nodes.Add(item.Value);
treeView1.ExpandAll();
}
}
}
}
例如:
父节点1-子节点1-子节点2-子节点3
父节点2-子节点1-
父节点3-子节点1
该程序最多执行到父节点1和子节点3。当子节点为4且未找到子程序时,该程序仅在此处停止,而不是移至下一个父节点。
例外:指定的参数超出有效值的范围参数名称索引。
重复的答案:在稍后讨论之后,我发现了上面的异常,我的问题在我不知道它是索引异常之前就发布了。
根据我们在以上评论中的讨论,
以下代码引发ArgumentOutOfRangeException
treeView1.Nodes[i].Nodes[j]
当i
或j
大于您实际拥有的节点数时,就会引发异常,就像其他数组一样。
您可以使用foreach
来执行此操作,也可以使用Nodes.Count
代替使用幻数(23)。
因此您的代码可能如下所示:
for (int i = 0; i < treeView1.Nodes.Count; i++)
{
for (int j = 0; j < treeView1.Nodes[i].Nodes.Count; j++)
{
foreach (var item in myDictionaryReconstructed)
{
if ("TreeNode: " + item.Key == treeView1.Nodes[i].Nodes[j].ToString())
{
treeView1.Nodes[i].Nodes[j].Nodes.Add(item.Value);
treeView1.ExpandAll();
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.