私のコードがエラーを返すのはなぜですか
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);
}
}
}