C# xml显示到treeview及递归遍历、删除、添加节点(两层节点)

摘要:
设置);xmlDoc.Load(读取器);reader.Close();XmlNodexn=xmlDoc.SelectSingleNode(“书店”);}this.tvTest.Nodes.Add(rootnode);tvTest.Nodes[0].Expand();EventArgse){TreeNodetreeNode=tvTest.SelectedNode;

本文参考此文,且演示数据采用此文提供样例数据:

https://www.cnblogs.com/xiaoxiangfeizi/archive/2011/08/07/2120807.html

显示:

 public void btnAddRoot_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.IgnoreComments = true;                      //忽略文档里的注释
            XmlReader reader = XmlReader.Create("Info.xml", settings);
            xmlDoc.Load(reader);
            reader.Close();    
            XmlNode xn = xmlDoc.SelectSingleNode("bookstore");

            XmlNodeList lxn = xn.ChildNodes;
            foreach (XmlNode xn1 in lxn)
            {
                XmlElement xe = (XmlElement)xn1;
                TreeNode chdnode = new TreeNode();
                TreeNode sonnode1 = new TreeNode();
                TreeNode sonnode2 = new TreeNode();
                TreeNode sonnode3 = new TreeNode();
                TreeNode sonnode4 = new TreeNode();

                XmlNodeList xn2 = xe.ChildNodes;

                chdnode.Text = xn2.Item(0).InnerText;
                rootnode.Nodes.Add(chdnode);

                sonnode1.Text = "ISBN号:"+xe.GetAttribute("ISBN").ToString();
                chdnode.Nodes.Add(sonnode1);

                sonnode2.Text = "书类:"+xe.GetAttribute("Type").ToString();
                chdnode.Nodes.Add(sonnode2);

                sonnode3.Text = "作者:"+xn2.Item(1).InnerText;
                chdnode.Nodes.Add(sonnode3);

                sonnode4.Text = "价格:"+xn2.Item(2).InnerText;
                chdnode.Nodes.Add(sonnode4);
            }
            this.tvTest.Nodes.Add(rootnode);
            tvTest.Nodes[0].Expand();

删除选中节点:

 private void btnDelNode_Click(object sender, EventArgs e)
        {
            TreeNode treeNode = tvTest.SelectedNode;            
            if (MessageBox.Show("确定删除?", "确认删除", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                treeNode.Remove();
            }             
        }

遍历所有节点:

        private List<TreeNode> nodeList = new List<TreeNode>();
        private void TraverseNode(TreeNode node)
        {
            nodeList.Add(node);
            for (int i = 0; i < node.Nodes.Count; i++)
            {
                TraverseNode(node.Nodes[i]);
            }
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < tvTest.Nodes.Count; i++)
            {
                TraverseNode(tvTest.Nodes[i]);
            }
            for (int j = 0; j < nodeList.Count; j++)
            {
                MessageBox.Show(nodeList[j].Text, null, MessageBoxButtons.OKCancel);
            }
        }

添加节点(与另一个窗体联动),采用委托方法:

子窗体代码:

namespace WindowsFormsApplication
{
    public delegate void ChangeTextHandler(string str1, string str2, string str3, string str4, string str5);
    public partial class Form2 : Form
    {
        public static Form2 form2;
      
        public Form2()
        {
            InitializeComponent();
            form2 = this;
        }

        public event ChangeTextHandler ChangeText;
        private void button1_Click(object sender, EventArgs e)
        {
             ChangeText(textBox1.Text, textBox2.Text, comboBox1.Text, textBox3.Text, textBox4.Text);
             this.Close();
        }       
    }
}

添加信息窗体:

C# xml显示到treeview及递归遍历、删除、添加节点(两层节点)第1张

主窗体代码:

     private void btnAddNode_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ChangeText += new ChangeTextHandler(Change_Text);
            f2.Show();
        }
        public void Change_Text(string str1, string str2, string str3, string str4, string str5)
        {
            TreeNode chdnode = new TreeNode();
            TreeNode sonnode1 = new TreeNode();
            TreeNode sonnode2 = new TreeNode();
            TreeNode sonnode3 = new TreeNode();
            TreeNode sonnode4 = new TreeNode();
            chdnode.Text  = str1;
            sonnode1.Text = "ISBN号:" + str2;
            sonnode2.Text = "书类:" + str3;
            sonnode3.Text = "作者:" + str4;
            sonnode4.Text = "价格:" + str5;
            rootnode.Nodes.Add(chdnode);
            chdnode.Nodes.Add(sonnode1);
            chdnode.Nodes.Add(sonnode2);
            chdnode.Nodes.Add(sonnode3);
            chdnode.Nodes.Add(sonnode4);
        }

免责声明:文章转载自《C# xml显示到treeview及递归遍历、删除、添加节点(两层节点)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[Java] SpringMVC工作原理之一:DispatcherServletspring boot 支持返回 xml下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Csharp: Winform 顏色選擇器 Color convert RGB and RGB convert Color

/// <summary> /// 選擇顏色 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> p...

VisionPro 各控件的C#中类库 (CogToolBlock类)像函数设计一样。

1.先了解其控件使用 编辑增加控件步骤1-2-3-4。我们把他当做一个整体进行封装,可以可以看成一个函数设计(增加输入类型几个,添加输出类型几个) 2.进行CogToolBlock控件功能设计(进行函数功能设计--即功能调试) 3.进行添加功能控件,进行配置把要输入和输出的项目设定好测试OK后进行保存。 4.下部分进行C#进行调用--先进行反序列化成...

uniGUI之新窗口uniForm(19)

     然后 保存,在这里 重命名窗口   //主窗口 调用 // NewForm2.UniForm1.Show() ; //非阻塞 NewForm2.UniForm1.ShowModal();//阻塞 //子窗口 调用procedure TUniForm2.UniButton1Click(Sender: TObject)...

DevExpress动态换肤

1.首先添加DevExpress.OfficeSkins和DevExpress.BonusSkins 两个引用。在Main()函数之前进行皮肤注册: 1 static class Program 2 { 3 /// <summary> 4 /// 应用程序的主入口点。 5 /// </summary> 6 [S...

基于LumiSoft.Net.dll发、收、删邮件

发邮件: using LumiSoft.Net.SMTP.Client; Mime m = new Mime(); MimeEntity mainEntity = m.MainEntity; // Force to create From: header field mainEntity.From = new Add...

C# DataTable 操作

添加引用 using System.Data; 创建表 //创建一个空表 DataTable dt = new DataTable(); //创建一个名为"Table_New"的空表 DataTable dt = new DataTable("Table_New"); 创建列 //1.创建空列 DataColumn dc = new DataColum...