无法显示 TreeView 的所有节点

Can't show all nodes of TreeView

我这里有以下代码,但是当我尝试将 child 添加到 parent 时,当 parentID 大于 4 时会导致错误。

public void LoadNodes()
{
    ConnectionShorten("TreeViewTable");
    int H = MyNodes.Tables["TreeViewTable"].Rows.Count;
    for (int i = 0; i < H; i++)
    {
        int PID = MyNodes.Tables["TreeViewTable"].Rows[i].Field<int>("ParentID");
        string Name = MyNodes.Tables["TreeViewTable"].Rows[i].Field<string>("RootName");
        int Level = MyNodes.Tables["TreeViewTable"].Rows[i].Field<int>("Level");
        int UID = MyNodes.Tables["TreeViewTable"].Rows[i].Field<int>("UID");

        switch (Level)
        {
            case 0:
                treeView1.Nodes.Add(Name.ToString());
                break;
            case 1:
                treeView1.Nodes[0].Nodes.Add(Name.ToString());
                break;
            case 2:
                switch (PID)
                {
                    case 1:
                        treeView1.Nodes[0].Nodes[0].Nodes.Add(Name.ToString());
                        break;
                    case 2:
                        treeView1.Nodes[0].Nodes[1].Nodes.Add(Name.ToString());
                        break;
                    case 3:
                        treeView1.Nodes[0].Nodes[2].Nodes.Add(Name.ToString());
                        break;
                    case 4:
                        treeView1.Nodes[0].Nodes[3].Nodes.Add(Name.ToString());
                        break;
                    case 5:
                        treeView1.Nodes[0].Nodes[4].Nodes.Add(Name.ToString());
                        break;
                    case 6:
                        treeView1.Nodes[0].Nodes[5].Nodes.Add(Name.ToString());
                        break;
                    case 7:
                        treeView1.Nodes[0].Nodes[6].Nodes.Add(Name.ToString());
                        break;
                    case 8:
                        treeView1.Nodes[0].Nodes[7].Nodes.Add(Name.ToString());
                        break;
                    case 9:
                        treeView1.Nodes[0].Nodes[8].Nodes.Add(Name.ToString());
                        break;
                    case 10:
                        treeView1.Nodes[0].Nodes[9].Nodes.Add(Name.ToString());
                        break;
                    case 11:
                        treeView1.Nodes[0].Nodes[10].Nodes.Add(Name.ToString());
                        break;
                    default:
                        break;
                }
                break;
            case 3:
                break;
            default:
                break;
        }

    }
}

它确实加载了 1 个主节点和 10 个 parents,然后当涉及到 child 时,它表示负索引,但我确定 parent 确实存在!

还有我怎么能像这样毫无难度地制作更多的关卡,因为我认为制作> 3的关卡非常困难。

你可以关闭它,我刚发现那个问题并解决了它。 这是因为数据库上的 ID 存在跳跃。所以我尝试在添加父项之前添加子项。我的程序是通过 ID 读取的,仅此而已……抱歉。