首页 新闻 搜索 专区 学院

当前线程处于堆栈溢出状态,因此无法计算表达式的值,在WPF里 ,用的treeview

0
[已解决问题] 解决于 2014-08-06 12:02

 /// <summary>
        /// 绑定快捷键树的方法
        /// </summary>
        /// <param name="nodes">节点集合</param>
        /// <returns>返回节点集合</returns>
        private List<PublicDepartNodes> Bind(List<PublicDepartNodes> nodes)
        {
            //最顶级的父节点ID,是父节点的CID
            //这块需要注意,如果你需要最顶级父节点那么这块的g就是最顶级父节点的PId,现在需求不需要,所以g就是最顶级父节点的CID
            string g = "00000000-0000-0000-0000-000000000000";
            Guid guid = new Guid(g);
            List<PublicDepartNodes> outputList = new List<PublicDepartNodes>();
            for (int i = 0; i <
                nodes.Count; i++)
            {
                if (nodes[i].PId == guid)
                {
                    outputList.Add(nodes[i]);
                }
                else
                {
                    FindDownward(nodes, nodes[i].PId).Nodes.Add(nodes[i]);
                }
            }
            return outputList;
        }

        /// <summary>
        /// 更具父节点向下寻找子节点
        /// </summary>
        /// <param name="nodes">节点集合</param>
        /// <param name="id">父节点id</param>
        /// <returns>返回节点对象</returns>
        private PublicDepartNodes FindDownward(List<PublicDepartNodes> nodes, Guid id)
        {
            if (nodes == null)
            {
                return null;
            }
            for (int i = 0; i < nodes.Count; i++)
            {
                if (nodes[i].Id == id)
                {
                    return nodes[i];
                }
                else
                {
                    PublicDepartNodes node = FindDownward(nodes[i].Nodes, id);
                    if (node != null)
                    {
                        return node;
                    }
                }
            }

问题补充:

这个该怎么解决啊   我觉得我做的这个没有无线递归啊?

眄眄的主页 眄眄 | 菜鸟二级 | 园豆:211
提问于:2014-08-06 11:00
< >
分享
最佳答案
0

List<PublicDepartNodes> nodes  怎么构造的?

我猜测是两个node为相互子节点了。

奖励园豆:5
Firen | 大侠五级 |园豆:5483 | 2014-08-06 11:15

是吗?那该怎么办啊

眄眄 | 园豆:211 (菜鸟二级) | 2014-08-06 11:26

@丫头2: 调用Bind函数的参数是哪来的?就是要看生成参数的函数。

Firen | 园豆:5483 (大侠五级) | 2014-08-06 11:30

@Firen: 

眄眄 | 园豆:211 (菜鸟二级) | 2014-08-06 11:33

@丫头2: 就是我添加的时候  递归还不会出错  就是一修改某一天数据的话,就会错了

眄眄 | 园豆:211 (菜鸟二级) | 2014-08-06 11:34
其他回答(2)
0

堆栈移除就是递归太多次了(大部分情况下,)

检查下递归退出条件你下面那个递归代码有无限递归的可能

吴瑞祥 | 园豆:28891 (高人七级) | 2014-08-06 11:01

可是我之前修改的时候  绑定树的都能出来,就是添加了一条新数据后,就出现在这个问题了

支持(0) 反对(0) 眄眄 | 园豆:211 (菜鸟二级) | 2014-08-06 11:05

是数据的问题吗?

支持(0) 反对(0) 眄眄 | 园豆:211 (菜鸟二级) | 2014-08-06 11:06
0

检查下方法 FindDownward 的各个分支是否都有 return 机制。

Launcher | 园豆:45045 (高人七级) | 2014-08-06 11:11

有的啊

支持(0) 反对(0) 眄眄 | 园豆:211 (菜鸟二级) | 2014-08-06 11:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册