2011-01-05 139 views
0

我有一类叫做持有人(holder.cs)包含以下内容:树视图添加节点问题

string name; 
    List<String> overView; 

两者都有get和set accesors。

现在的问题是获取所有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(); 
    } 

所以basicly树状视图显示我期待的是:

Overview1 
    name1 
    name2 
    name3 
Overview2 
    name7 
    anyothernamethatbelongshere... 

与属于概述了所有名称。

谢谢。

回答

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

+0

谢谢,这解决了我的问题! – KevKelders 2011-01-05 11:54:39

0

您需要:

  1. 创建顶级“Overviewx”节点
  2. 子节点添加到您刚刚创建
  3. 顶级节点添加到树
  4. 顶级节点
  5. 对所有顶级节点重复。

希望这会有所帮助!

+0

问题实际上是将子节点(名称)添加到父节点概述中。概述已经显示,但不确定用什么结构来添加这些名称。 – KevKelders 2011-01-05 11:00:05