0

最初の 2 文字に基づいて文字列の階層ビューを作成したいと考えています。

文字列が次の場合: 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 に答える