Как я могу заполнить древовидные представления пользовательскими древовидными структурами?То, что я пытаюсь сделать:
У меня есть класс Actor, содержащий массив Actors (как дочерние элементы, каждый из которых содержит другой массив дочерних элементов и т. Д.), И он имеет Actor какродитель.Я просто хочу отобразить их в виде дерева.Класс актера выглядит так:
class Actor
{
public List<Actor> Children {get; set;} = new List<Actor>();
public Actor Parent {get; set;}
public Actor[] GetChildren()
{
return Children.ToArray();
}
}
private void UpdateSceneryTree()
{
SceneryStructureView.Nodes.Clear();
var root = new TreeNode(KerboEngine.CurrentScenery.Name) ImageIndex = 1, SelectedImageIndex = 1 };
ListScenery(root);
SceneryStructureView.Nodes.Add(root);
}
private void ListScenery(TreeNode root)
{
foreach (var sco in KerboEngine.CurrentScenery.RootStructures) //root structures are all roots which have no parent.
{
TreeNode n = new TreeNode(sco.Name) { Tag = sco };
List<TreeNode> ns = new List<TreeNode>();
foreach (var a in sco.GetChilds()) //here we get all childs of them
ns.Add(new TreeNode(a.Name) { Tag = a });
n.Nodes.AddRange(ns.ToArray());
root.Nodes.Add(n);
}
}
Этот код работает, но только на двух глубинах:
Likeвы видите, что у Child1 в Construct 2 должно быть 2 дочерних элемента, я могу видеть их с сеткой свойств, но не в виде дерева.
Кто-нибудь знает решение для получения и перечисления дерева в неограниченных глубинах?