【问题标题】:What would I use when in need of a dynamicly adjusting multidemnsional list?当需要动态调整多维列表时我会使用什么?
【发布时间】:2013-07-10 15:01:02
【问题描述】:

我有一个列表,我想用作动态扩展的树视图,但如果我要在一个列表中有多个列表,我需要在初始列表的定义中声明它。我缺少什么来实现这一点,有什么更好的方法可以用来实现我的目标吗?

为了上下文:我试图像树视图一样填充它,以便我可以在我的应用程序中复制注册表。

【问题讨论】:

    标签: c# list dynamic multidimensional-array


    【解决方案1】:

    为您的场景使用正确的类型。

    在你的情况下,这是一个 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; }
    }
    

    假设以下树:

    Root
    + Child1
      + Child1a
      + Child1b
    + Child2
      + Child2a
        + Child2aA
        + Child2aB
      + Child2b
    

    你可以这样创建它:

    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").Children.AddRange(...); 这会将一些孩子添加到"Child1"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    相关资源
    最近更新 更多