TreeNode.Add()不显示任何响应

时间:2013-12-17 17:18:03

标签: c# winforms debugging treeview treenode

我有一个以System.Windows.Forms中的TreeNode类型的变量开头的类。该类的函数工作是添加一些节点到这个变量..但问题是,当我尝试添加一些节点,调试器冻结,并没有显示任何响应..我搜索了互联网,但我没有找到这样的问题。这是其中一个功能

注意:产生问题的行已注释

public Node Factor()
    {
        Node result = new Node();
        if (count < tokens.Count && tokens[count] == TokenType.LeftParentheses)
        {
            this.Match(TokenType.LeftParentheses);
            result = this.Expression();
            if (!this.Match(TokenType.RightParentheses))
                return null;
            result.viewnode.Text = "Expression";
        }
        else if (tokens[count] == TokenType.Num)
        {
            if (!this.Match(TokenType.Num))
                return null;
            NumberNode nnode = new NumberNode(lexemes[count - 1]);
            nnode.childs = "NumberNode : Value " + nnode.value + '\n';
            nnode.viewnode = new TreeNode("Number - Value = " + nnode.value);
            result = nnode;
            result.viewnode = nnode.viewnode;
            result.viewnode.Nodes.Add(nnode.viewnode);
        }
        else
        {
            if (!this.Match(TokenType.ID))
                return null;
            IdNode inode = new IdNode(lexemes[count - 1], "0");
            inode.childs = "IdNode - Value : " + inode.name + '\n';
            inode.viewnode = new TreeNode("Id - " + inode.name);
            result = inode;
            result.viewnode = inode.viewnode;
            //the program freezes at this line
            inode.viewnode.Nodes.Add(inode.viewnode);
        }
        return result;
    }

1 个答案:

答案 0 :(得分:1)

您正在将节点添加到自身。

应该是result.viewnode ...