C# 递归填充 TreeView 堆栈溢出

标签 c# recursion treeview stack-overflow

哇哦!我要在 stackoverflow 上发布关于堆栈溢出的问题 :)

所以可能只是今天是星期五,我的大脑已经炸了,但我正在尝试编写一个类,它使用从 TreeNode 继承的通用类型的对象和一个简单的接口(interface)递归填充给定的 TreeView。

出于某种原因,当我尝试填充节点时出现 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);
    }
}

最佳答案

好的,所以 Henk 明白了,这是一个循环。

我有 2 个单独的表,其中包含填充 TreeView 的文件夹项和报告项 - 我在两者中都使用标识列作为 ID - 标识被复制到一个文件夹,该文件夹同时具有另一个文件夹和报告项作为子项.

我刚刚添加了一个检查以仅调用文件夹项目的递归,现在它工作得很好。

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

感谢您的帮助!

关于C# 递归填充 TreeView 堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8096861/

相关文章:

c# - async Task<object> 函数死锁

c# - 用于测量服务器响应时间的等效 Java 代码

java - 递归地检查给定的字符串是否是平衡的括号字符串

c++ - 这个递归函数在 C++ 中是如何工作的?

wpf - TreeView 上的 MvvmLight EventToCommand 抛出 NullReferenceException

java - 如何防止 TreeItem 选择?

c# - 将没有属性名称的 Json 解析为 C#

c# - 添加 UITabBarController 时出错

java - 给定一个整数数组(长度为 n),使用 Java 中的递归查找并返回输入数组的所有子集

Winforms treeview,递归检查子节点问题