首页 > 编程语言 >C#树形结构的保存与加载(二)

C#树形结构的保存与加载(二)

时间:2023-06-02 17:11:57浏览次数:45  
标签:node Checked childElement C# XmlElement xmlDocument element 树形 加载

添加控件:

treeView1

button2

button3

保存代码如下:

private void xmlTreeSave(string xmlName)
        {
            //保存和读取TREE VIEW的状态
            //创建一个 XmlDocument 对象
            XmlDocument xmlDocument = new XmlDocument();

            //创建一个 XmlElement 对象,并将其设置为根元素
            XmlElement rootElement = xmlDocument.CreateElement("TreeViewState");
            xmlDocument.AppendChild(rootElement);

            foreach (TreeNode node in treeView1.Nodes)
            {
                XmlElement element = xmlDocument.CreateElement("Node");
                element.SetAttribute("Text", node.Text);
                element.SetAttribute("Checked", node.Checked.ToString());

                foreach (TreeNode childNode in node.Nodes)
                {
                    XmlElement childElement = xmlDocument.CreateElement("ChildNode");
                    childElement.SetAttribute("Text", childNode.Text);
                    childElement.SetAttribute("Checked", childNode.Checked.ToString());

                    element.AppendChild(childElement);
                }

                rootElement.AppendChild(element);
            }

            xmlDocument.Save(xmlName);
        }

加载代码如下:

private void xmlTreeLoad(string xmlName)
        {
            treeView1.Nodes.Clear();
            //加载 XML 文件并创建一个 XmlDocument 对象。
            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load(xmlName);

            XmlElement rootElement = xmlDocument.DocumentElement;

            foreach (XmlElement element in rootElement.ChildNodes)
            {
                TreeNode node = new TreeNode(element.GetAttribute("Text"));
                node.Checked = Convert.ToBoolean(element.GetAttribute("Checked"));

                foreach (XmlElement childElement in element.ChildNodes)
                {
                    TreeNode childNode = new TreeNode(childElement.GetAttribute("Text"));
                    childNode.Checked = Convert.ToBoolean(childElement.GetAttribute("Checked"));

                    node.Nodes.Add(childNode);
                }
                treeView1.Nodes.Add(node);
            }
        }

调用:

        private void button2_Click(object sender, EventArgs e)
        {
            xmlTreeSave("TreeViewState.xml");
        }
        private void button3_Click(object sender, EventArgs e)
        {
            xmlTreeLoad("TreeViewState.xml");
        }

 

标签:node,Checked,childElement,C#,XmlElement,xmlDocument,element,树形,加载
From: https://www.cnblogs.com/Fpack/p/17452371.html

相关文章

  • 详解Oracle用户解锁命令的两则实现方法
    在安装完Oracle10g之后,想打开sql*plus来学习,然后按照书上的步骤用scott用户来连接数据库,可输了好几次都提示一个错误。error:theaccountislocked然后上网查了一下之后发现这个用户被锁定了,至于它为什么被锁定,可能是下面几个原因。1.尝试多次登录未成功.(可能密码不正确)2.此用......
  • [linux]undefined reference to `__gxx_personality_v0'
    linux程序 #include#include#includeintcount=0;voidctrl_c_count(int);intmain(void){intc;void(*old_handler)(int);old_handler=signal(SIGINT,ctrl_c_count);while((c=getchar()!=''));printf("Ctrl_Ccount=%d",count);......
  • ORACLE的三个配置文件介绍
     在oracle安装目录$HOME/network/admin下,经常看到sqlnet.oratnsnames.oralistener.ora这三个文件,除了tnsnames.ora,其他两个文件详细的用途很多人都不太了解。sqlnet.ora用在oracleclient端,用于配置连接服务端oracle的相关参数.tnsnames.ora用在oracleclient端,用......
  • ATT&CK v13版本战术介绍——凭证访问(一)
    一、引言在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权、防御规避战术,本期我们为大家介绍ATT&CK14项战术中凭证访问战术第1-6种子技术,后续会介绍凭证访问其他子技术,敬请关注。二、ATT&CKv13简介MITREATT&CK是一个全球可访问的基于现实世界观......
  • Oracle主要配置文件
    Oracle主要配置文件介绍(转帖)Oracle主要配置文件介绍:  profile文件,oratab文件,数据库实例初始化文件initSID.ora,监听配置文件,sqlnet.ora文件,tnsnames.ora文件1.2Oracle主要配置文件介绍1.2.1/etc/profile文件          系统级的环......
  • str.contains()输出True False 或 na
    str.contains()输出TrueFalse或na容易混淆的是:value_counts()不会忽略truefalse但是会忽略na......
  • AI安防视频汇聚融合平台EasyCVR v3.2版本托盘显示优化
    EasyCVR基于云边端协同,可支持海量视频的轻量化接入与汇聚管理。平台兼容性强、拓展度高,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等功能。为了便于用户二次开发、调用与集成,我们也提供了丰富的A......
  • EasyCVR使用SDK接入,设备全部离线,但是SDK DEMO接入正常是什么原因?
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持多协议、多类型的设备接入,包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。有用户反馈,EasyCVR平台中,使用SDK接入的设备显示全......
  • Photoshop 2023 Beta(PS2023Beta) v24.6 AI测试版 win/ mac版
    Photoshop2023Beta内置Ai绘图功能版,这是世界上第一个创意和设计工作流程的副驾驶,为用户提供了一种神奇的新工作方式。这将两个强大的成像引擎结合在一起——Photoshop和生成式AI,使您能够通过文本提示从Photoshop内部生成内容,并使用Photoshop的全面工具对其进行编辑以创建非凡的结......
  • Kubernetes(k8s)定时任务:CronJob
    目录一.系统环境二.前言三.KubernetesCronJob简介四.kubernetesCronJob和Linuxcrontab对比五.CronJob表达式语法六.创建CronJob定时任务七.创建具有超时时间的CronJob定时任务八.总结一.系统环境本文主要基于Kubernetes1.21.9和Linux操作系统CentOS7.4。服务器版本docke......