0

私のコードがエラーを返すのはなぜですか

Object reference not set to an instance of an object.treeNode.Nodes[el.Name].Nodes.Add(nodes);?

ツリービューのメニューになるようにxmlファイルをロードして、クリックすると表示されます。それは私のウェブブラウザにURLをロードします..例えば、ツリービューで出力したい:

-Home
    -About
         -MoreAbouts
         -MoreAbouts
    -About
-Index
    -About
         -MoreAbouts
         -MoreAbouts
    -About

私はこれを使用して達成します。しかし、それはエラーを返します

私のXMLファイルは

<ListOfTopics>
  <Introduction url="index.html" title="Introduction">
        <Iframe url="iframe.html" title="Iframe">
            <Iframe2 url="iframe.html" title="Iframe2"/>
            </Iframe>
    </Introduction>
  <Topic url="about.html" title="About"/>
</ListOfTopics>

C# コード

private void XmlElementHasChild(bool index,XmlElement el, TreeView treeNode)
    {
        if (index)
        {
            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");
                    treeNode.Nodes.Add(nodes);
                    XmlElementHasChild(true,es,treeNode);
                }
            }
        }
        else
        {
            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");
                    treeNode.Nodes[el.Name].Nodes.Add(nodes);
                    XmlElementHasChild(false, es, treeNode);
               } 
            }
        }
    }
    private void TreeViewLoadXml(bool index, TreeView treeNode)
    {
        XmlDocument xml = new XmlDocument();
        xml.Load(topics);
        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");

            treeNode.Nodes.Add(node);

            if (index)
            {
                XmlElementHasChild(true, el, treeNode);
            }
            else
            {
                XmlElementHasChild(false,el, treeNode);
            }
            i++;
        }

        if (index)
        {
            treeNode.Sort();
        }
    }

これは修正です。申し訳ありません

private void XmlElementHasChild(bool index,XmlElement el, TreeView treeNode)
        {
                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");
                        treeNode.Nodes.Add(nodes);
                        XmlElementHasChild(true,es,treeNode);
                    }
                }
        }
4

0 に答える 0