更改树视图属性值C#

时间:2016-09-12 11:43:49

标签: c# xml treeview nodes

我正在加载一个XML文件并将其显示为树视图。我想让用户看看每个元素都有哪些子元素。有没有办法这样做? 我遇到了与节点匹配的麻烦(树节点与'原始'节点)。我按名称对它们进行了比较,但我并不总是得到正确的结果。 这就是我到目前为止所做的:

                        xmlFile = new XmlDocument();
                        xmlFile.Load(dialog.FileName);
                        treeView1.Nodes.Clear();
                        treeView1.Nodes.Add(new TreeNode(xmlFile.DocumentElement.Name));
                        TreeNode tNode = new TreeNode();
                        tNode = treeView1.Nodes[0];
                        AddNode(xmlFile.DocumentElement, tNode);
                        treeView1.ExpandAll();

添加节点

public void AddNode(XmlNode xmlNode, TreeNode treeNodes)
           { XmlNode xNode;
            TreeNode tNode;
            XmlNodeList nodeList;
            int i;
            if (xmlNode.HasChildNodes)
           {nodeList = xmlNode.ChildNodes;
                for (i = 0; i <= nodeList.Count - 1; i++)
                {xNode = xmlNode.ChildNodes[i];
                    treeNodes.Nodes.Add(new TreeNode(xNode.Name));
                    tNode = treeNodes.Nodes[i];
                    AddNode(xNode, tNode);}}
            else
            { treeNodes.Text = (xmlNode.OuterXml).Trim();}}

在树节点上单击

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e){         
            List<string> temp = new List<string>();
            this.lbElements.Items.Clear(););
            foreach (XmlNode node in xmlFile.DocumentElement.ChildNodes)
            {
                if (node.Name == e.Node.Name)
                {
                 foreach (string s in fh.getChildNodes(node)) temp.Add(s);

                  if (!temp.Contains(s))
                        temp.Add(s);


                 foreach (string s in temp) this.lbElements.Items.Add(s);

2 个答案:

答案 0 :(得分:0)

尝试使用if (node.Name == e.Node.Text && node.NodeType == XmlNodeType.Element) 在treeview_NodeMouseClick()中。

答案 1 :(得分:0)

最简单的方法是使用XmlReader并遍历内容。 我试过这种方式。

&GT;

  private void treeView1_NodeMouseClick_1(object sender,
> TreeNodeMouseClickEventArgs e)
>         {
>             XmlReader reader = null;
>             reader = XmlReader.Create(filePath);
>             {
>                 reader.MoveToContent();
>                 // Parse the file and display each of the nodes.
>                 while (reader.Read())
>                 {
>                     switch (reader.NodeType)
>                     {
>                         case XmlNodeType.Element:
>                             if (reader.LocalName == "to")
>                             {
> 
>                             }
>                             break;
> 
>                         case XmlNodeType.Text:
>                             if(reader.Value == "Jane")
>                             {
> 
>                             }
>                             break;
>                     }
>                 }
>             }
>         }

Xml file used is:
<note>
  <to>Tove</to>
  <from>Jane</from>
  <heading>Reminder</heading>
  <body>Weekend</body>
</note>