private DevExpress.XtraTreeList.Nodes.TreeListNode tlKKK;
private DevExpress.XtraTreeList.Nodes.TreeListNode onFindNode(DevExpress.XtraTreeList.Nodes.TreeListNode StartNode, string ColName, string Values)
{
    DevExpress.XtraTreeList.Nodes.TreeListNode RNode = null;    foreach (DevExpress.XtraTreeList.Nodes.TreeListNode tln in StartNode.Nodes)
    {
        if (tln == null)
            break;
        if (tln.GetValue(ColName).ToString() == Values)
        {
            tlKKK=tln;//tlKKK得到的值正确,即使是在三层以上都是正确的
            RNode = tln;//在三层或以上层次时会出问题
            //break; //如果在此处使用了break,如果树有三层或以上层次时会出问题
        }
        if (tln.HasChildren)
            this.onFindNode(tln, ColName, Values);
    }
    return RNode;
}
有没有高手帮解释下,现在给搞的头晕晕的.....

解决方案 »

  1.   

     //查找节点
            public string GetNode(TreeNode node, int num, string path)
            {
                if (node == null)
                {
                    return "no num";
                }
                else
                {
                    if (node.Value == num)
                    {
                        return path;
                    }
                    else if (node.Value > num)
                    { return GetNode(node.Left, num, path+"0"); }
                    else
                    { return GetNode(node.Right, num, path+"1"); }
                }
                return "no num";
            }
      

  2.   

    TreeListNode tlKKK; 
    TreeListNode onFindNode(TreeListNode StartNode, string ColName, string Values) 

        foreach (TreeListNode tln in StartNode.Nodes) 
        { 
            if (tln == null) 
            {
              return null; 
            }        if (tln.GetValue(ColName).ToString() == Values) 
            { 
                return tln;
            } 
            if (tln.HasChildren) 
            { 
               TreeListNode RNode = this.onFindNode(tln, ColName, Values); 
               if (null != RNode) return RNode;
            }
        }     return null;