C# 当需要动态调整的多部门列表时,我会使用什么?
我有一个列表,我想作为一个动态扩展的树视图,但是如果我想在一个列表中有多个列表,我需要在初始列表的定义中声明它。我缺少什么来完成这一点,是否有更好的方法来实现我的目标C# 当需要动态调整的多部门列表时,我会使用什么?,c#,list,dynamic,multidimensional-array,C#,List,Dynamic,Multidimensional Array,我有一个列表,我想作为一个动态扩展的树视图,但是如果我想在一个列表中有多个列表,我需要在初始列表的定义中声明它。我缺少什么来完成这一点,是否有更好的方法来实现我的目标 出于上下文考虑:我试图像树视图一样填充它,以便在我的应用程序中复制注册表。根据您的场景使用正确的类型 在您的例子中,这是一个类TreeNode,如下所示: public class TreeNode { private readonly List<TreeNode> _children = new List&l
出于上下文考虑:我试图像树视图一样填充它,以便在我的应用程序中复制注册表。根据您的场景使用正确的类型 在您的例子中,这是一个类
TreeNode
,如下所示:
public class TreeNode
{
private readonly List<TreeNode> _children = new List<TreeNode>();
public TreeNode(string name, params TreeNode[] children)
{
Name = name;
_children.AddRange(children);
}
public List<TreeNode> Children { get { return _children; } }
public string Name { get; set; }
}
您可以这样创建它:
var root = new TreeNode("Root",
new TreeNode("Child1",
new TreeNode("Child1a"),
new TreeNode("Child1b")),
new TreeNode("Child2",
new TreeNode("Child2a",
new TreeNode("Child2aA"),
new TreeNode("Child2aB")),
new TreeNode("Child2b")));
所以我会像你发布的那样创建我自己的TreeNode类,并像使用常规可用的类一样使用它?我在这里遇到的问题,也许我只是没有正确地使用对象,但是我如何在一个预先存在的对象中添加一个接一个的子对象呢?示例:registryTreeTracker.Children.AddRange(rootSubs);其中rootSubs是一个字符串数组,或者只是一个普通的add来添加单个节点?好的,我对它进行了一些研究,并了解了如何使用它。非常感谢这是一个巨大的帮助!好吧,我以为我拿到了,但我想我还是有点泥泞。如何向对象中预先存在的子对象添加更多子对象?@JBeck:您可以通过不创建“内联”来保留对它的引用,如我在示例中所示。或者您可以使用
Children
属性获取子级:root.Children.Single(“Child1”).childreng.AddRange(…)
这会将一些子项添加到“Child1”
。
var root = new TreeNode("Root",
new TreeNode("Child1",
new TreeNode("Child1a"),
new TreeNode("Child1b")),
new TreeNode("Child2",
new TreeNode("Child2a",
new TreeNode("Child2aA"),
new TreeNode("Child2aB")),
new TreeNode("Child2b")));