0

我想根据前两个字符创建字符串的分层视图。

如果字符串是:AAAA,AAAA,BBDD,AABB,AACC,BBDD,BBEE

我想创建一个看起来像这样的树视图:

AA  
  AAAA  
  AABB
  AACC 
BB
  BBDD
  BBEE

我目前有一些看起来像这样的代码(在字符串的循环内):

    TreeNode pfxNode;

    if (treeView1.Nodes[pfx]!=null) {
        pfxNode = treeView1.Nodes[pfx];
    }
    else {
        pfxNode = treeView1.Nodes.Add(pfx);
    }

    if (!pfxNode.Nodes.ContainsKey(string)) {
        pfxNode.Nodes.Add(string, string + " some info");
    }

由于某种原因,这最终会在顶层出现多个“AA”节点。
我错过了什么?

请不要对字符串进行预过滤我希望能够根据其键检查特定树节点是否存在。

谢谢

4

2 回答 2

2
else {
    pfxNode = treeView1.Nodes.Add(pfx);
}

这是您的错误,您忘记设置树节点的键。所以下一个 ContainsKey() 不会找到它。使固定:

    pfxNode = treeView1.Nodes.Add(pfx, pfx);
于 2011-06-09T21:05:11.140 回答
0

用这个:

var q = from s in arr
        group s by s.Substring(0, 2) into g
        select new
        {
            Parent = g.Key,
            Children = g.Select (x => x).Distinct()
        };

foreach (var item in q)
{
    var p = new TreeNode(item.Parent);
    TreeView1.Nodes.Add(p);
    foreach (var item2 in item.Children)
        p.Nodes.Add(new TreeNode(item2));
}
于 2011-06-09T20:49:01.883 回答