哇哦!我要在 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/