1

我正在读取一个 XML 文件并TreeView在 C# 中使用我的数据。我的程序返回错误

System.Windows.Forms.dll 中出现“System.StackOverflowException”类型的未处理异常。

为什么?

XML 文件

<ListOfTopics>
  <MainTopic url="index.html" title="Homes">
    <SubTopic url="index.html" title="Sub Topic1"/>
    <SubTopic url="index.html" title="Sub Topic2"/>
    <SubTopic url="index.html" title="Sub Topic3"/>
  </MainTopic>
</ListOfTopics>

C# 代码

public void LoadTopics()    
{
    XmlDocument xml = new XmlDocument();
    xml.Load("topics.xml");
    int i = 0;

    foreach (XmlElement el in xml.DocumentElement.ChildNodes)
    {           
        TreeNode node = new TreeNode();
        node.ToolTipText = el.GetAttribute("url");
        node.Name = el.GetAttribute("title");
        node.Text = el.GetAttribute("title");
        topicTree.Nodes.Add(node);

        if (el.HasChildNodes)
        {
            foreach (XmlElement es in el.ChildNodes)
            {
                TreeNode nodes = new TreeNode();
                nodes.ToolTipText = es.GetAttribute("url");
                nodes.Name = es.GetAttribute("title");
                nodes.Text = es.GetAttribute("title");
                topicTree.Nodes[i].Nodes.Add(node);
            }

        }
        i++;   
    }
}
4

1 回答 1

1

我运行了您的代码并且没有异常,但是我确实在您的代码中发现了一个错误:

topicTree.Nodes[i].Nodes.Add(node);

您正在重新添加父节点,将其更改为:

topicTree.Nodes[i].Nodes.Add(nodes);
于 2012-12-03T04:41:01.597 回答