treeview添加节点问题

时间:2011-01-05 10:48:03

标签: c# treeview

我有一个名为Holder(holder.cs)的类,其中包含以下内容:

  string name;
  List<String> overView;

两者都获得并设置了加速器。

现在的问题是获取一个树视图,其中所有的overView项都作为父节点,列出了下面所有属于它的名称。

所以在我的treeviewForm.cs中,到目前为止,我有以下内容正确列出了overView项目。 该名称是通过文本框输入的,而overView只是4个项目,可以通过选择复选框来选择或不选择。

但我不知道我是如何将名称添加到overView节点的。因为我似乎无法连接名称应该来的treeViewList.Nodes.Add(list[i].overView[j]后面的任何内容。

listForm.cs类:

    List<Holder> list;

    private void ShowOverviewWithName() 
    {
        treeViewList.Nodes.Clear();

        for (int i=0; i < list.Count; i++) 
        {
            for (int j=0; j < list[i].overView.Count; j++)
            {
                //adds the overView name
                treeViewList.Nodes.Add(list[i].overView[j]); 
            }
        }

        treeViewList.ExpandAll();
    }

基本上我正在寻找的树视图显示是:

Overview1
   name1
   name2
   name3
Overview2
   name7
   anyothernamethatbelongshere...

使用属于概述的所有名称。

感谢。

2 个答案:

答案 0 :(得分:0)

你需要:

  1. 创建顶级“Overviewx”节点
  2. 将子节点添加到刚刚创建的顶级节点
  3. 将顶级节点添加到树
  4. 对所有顶级节点重复此操作。
  5. 希望这有帮助!

答案 1 :(得分:0)

我不确定你的问题......

但是假设有这个代码:

var h1 = new Holder{ name = "name1", overView = new List<string>{ "Overview1", "Overview2" } };
var h2 = new Holder{ name = "name2", overView = new List<string>{ "Overview1" } };
var h3 = new Holder{ name = "name3", overView = new List<string>{ "Overview1" } };
var h4 = new Holder{ name = "name4", overView = new List<string>{ "Overview2" } };

List<Holder> list = new List<Holder> { h1, h2, h3, h4 };

treeViewList.Nodes.Clear();

for (int i = 0; i < list.Count; i++)
{
    for (int j = 0; j < list[i].overView.Count; j++)
    {
        string overviewName = list[i].overView[j];

        //adds the overView name if doesn't exist yet
        TreeNode parent;
        if (!treeViewList.Nodes.ContainsKey(overviewName))
            parent = treeViewList.Nodes.Add(overviewName,overviewName);
        else
            parent = treeViewList.Nodes[overviewName];

        // adds the name under the overView
        parent.Nodes.Add(list[i].name);
    }
}

treeViewList.ExpandAll();

您将获得以下树:

alt text