使用C#中的2维列表或数组动态填充TreeView

时间:2015-07-13 21:25:41

标签: c# treeview nodes

我正在尝试使用来自二维源(例如List>)的项来填充预先存在的TreeView。或数组[,]。

例如,假设我有一个如下列表:

莎拉,约翰,吉尔,法案

莎拉,乔,吉尔

马特,迈克尔,苏,乔治

Matt,Micheal,Sue,George,Sam

在这个例子中,如果一个名字存在于左边那么那个人是父母,而右边则代表他们的孩子。

我开始编写以下代码但被卡住了:

 private TreeNode ParentChild(TreeNode node, string parent, string child)
    {
        if (!node.Nodes.ContainsKey(parent))
        {
            TreeNode p = new TreeNode(parent);
             p.Name = parent;
             node.Nodes.Add(p);
        }
        if (!node.Nodes[parent].Nodes.ContainsKey(child))
        {
            TreeNode c = new TreeNode(child);
            c.Name = child;
            node.Nodes[parent].Nodes.Add(child);
        }

  private TreeView addNode(List<List<string>> keys, TreeView tree, TreeView tree1)
    {


        for(int i=0; i<keys.Count;i++)
        {
            TreeNode top= new TreeNode();
            if(tree.Nodes.ContainsKey(keys[i][0]))
                 top= tree.Nodes[keys[i][0]];
            for( int j = 0; j<keys.Count-1; j++)
            {

                TreeNode a = ParentChild(top,keys[i][j],keys[i][j+1]);
            }
            tree.Nodes.Add(top);
        }


    }

嵌套列表示例:  public void example()          {

       List<List<string>> example = new List<List<string>>();
        List<string> tmp = new List<string>();
        tmp.Add("Sarah");
        tmp.Add("John");
        tmp.Add("Jill");
        tmp.Add("Bill");
        example.Add(tmp);
        List<string> tmp2 = new List<string>();
        tmp2.Add("Sarah");
        tmp2.Add("Joe");
        tmp2.Add("Jill");
        example.Add(tmp2);
        List<string> tmp3 = new List<string>();
        tmp3.Add("Matt");
        tmp3.Add("Micheal");
        tmp3.Add("Sue");
        tmp3.Add("george");
        example.Add(tmp3);
        List<string> tmp4 = new List<string>();
        tmp3.Add("Matt");
        tmp3.Add("Micheal");
        tmp3.Add("Sue");
        tmp3.Add("George");
        tmp4.Add("Sam");
        example.Add(tmp4);
     }

任何帮助都将不胜感激。

0 个答案:

没有答案