C#以递归方式填充TreeView Stack Overflow

时间:2011-11-11 16:18:23

标签: c# recursion treeview stack-overflow

哇噢!我将在stackoverflow上发布一个关于堆栈溢出的问题:)

所以它可能只是星期五而且我的大脑已经被炒了,但我正在尝试编写一个类,它递归地填充给定的TreeView,其中包含一个继承自TreeNode和简单接口的泛型类型的对象。

由于某些原因,当我尝试填充节点时,我收到了stackoverflow异常。

我简单的界面:

public interface ITreeNode
{
    int ItemID { get; set; }
    int ParentID { get; set; }
}

递归代码:

public void SetNodes(int rootId)
{
    foreach (T root in _nodeList.Where(i => i.ParentID == rootId))
    {
        _tree.Nodes.Add(root);
        addBrowserItems(root);
    }
}

private void addBrowserItems(T parentNode)
{
    foreach (T child in _nodeList.Where(i => i.ParentID == parentNode.ItemID))
    {
        parentNode.Nodes.Add(child);
        addBrowserItems(child);
    }
}

1 个答案:

答案 0 :(得分:2)

好的,所以Henk得到了它,有一个循环。

我有两个单独的表格,其中包含填充树视图的文件夹项目和报告项目 - 我使用了一个标识列作为两者中的ID - 并且对于同时包含另一个文件夹和报告项目作为子项的文件夹复制了标识

我刚刚添加了一个检查,只调用文件夹项的递归,现在它可以正常工作。

我知道这是一个愚蠢的星期五错误。

感谢您的帮助!