我正在尝试在Winform(使用c#)中构建具有类似附件图像的类似结构的Treeview。假设我拥有最低的节点信息及其所有父节点信息。例如:我知道最低的子节点名称是:“ a”,它的父节点是:“ b”,然后盛大节点是“ c”,以此类推。我将拥有所有最低的子节点及其所有父节点信息,因此需要在正确的组中创建它们并对其进行分组。所以我只是想知道怎么做?
谢谢:)。
例如,您可以尝试使用Tag
使实例与其节点保持对应关系
using System.Linq;
...
private static TreeNode AddNodes<T>(TreeView tree, IEnumerable<T> items) {
if (null == tree)
throw new ArgumentNullException(nameof(tree));
else if (null == items)
throw new ArgumentNullException(nameof(items));
bool found = true;
TreeNodeCollection nodes = tree.Nodes;
TreeNode node = null;
foreach (var item in items.Reverse()) {
if (found) {
node = nodes.OfType<TreeNode>().FirstOrDefault(nd => object.Equals(nd.Tag, item));
found = node != null;
}
if (!found) {
node = new TreeNode(item?.ToString());
node.Tag = item;
nodes.Add(node);
}
nodes = node.Nodes;
}
return node;
}
用法:
myTreeView.BeginUpdate();
try {
// Items from child to parent
AddNodes(myTreeView, new string[] { "leaf", "parent", "root"});
AddNodes(myTreeView, new string[] { "child", "parent", "root" });
AddNodes(myTreeView, new string[] { "child", "branch", "root" });
}
finally {
myTreeView.EndUpdate();
}
您将有
root
parent
leaf
child
branch
child
结构