我正在尝试使用来自二维源(例如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);
}
任何帮助都将不胜感激。