繁体   English   中英

如何在TreeNode C#中创建嵌套循环

[英]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]

ij大于您实际拥有的节点数时,就会引发异常,就像其他数组一样。

您可以使用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.

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