C# 第十八章(XML 文件委托)

1. 单例模式
在已经打开某个窗口时,再想打开 出来的还是之前的已经打开的窗口

方法:(1)两个窗体,A,B 假设点击B打开A ,那么就要在B的打开按钮中,添加打开A的事件:

Form1 example =  Form1.GetSingle(); 
   example.Show();

(2)被打开的窗体A,要设置一个本窗体的变量public static Form1 frmSingle = null;
(3)当窗体为空的时候,重新申请新的打开窗体

public static Form1 GetSingle()
        {
            if(frmSingle == null)
            {
                frmSingle = new Form1();
            }
            return frmSingle;
        }

2.XML文件控件
在这里插入图片描述

节点的创建

 //注意:所有节点的创建都是在文档中创建的 文档名.creatElement

            //1.创建XML文档对象
            //2.引进命名空间
            XmlDocument doc = new XmlDocument(); //相等于创建了一页白纸

            //3.创建第一行描述信息,并添加到doc文档中
            XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "utf-8", null);//这里是xml文件中的第一行即描述信息行 1.0版本  utf-8解码格式
            doc.AppendChild(declaration);  //将信息添加到doc文档中
           
            //4.创建第一个根节点
            XmlElement BooksNode = doc.CreateElement("Books");
            doc.AppendChild(BooksNode);  //将信息添加到doc文档中

            //5.创建根节点的子节点
            XmlElement bookNode = doc.CreateElement("book");
            BooksNode.AppendChild(bookNode); //将节点添加到子节点中

            //6.创建根节点的子节点的子节点
            XmlElement NameNode1 = doc.CreateElement("Name");
            NameNode1.InnerText = "《水浒传》";
            bookNode.AppendChild(NameNode1);

            XmlElement PriceNode1 = doc.CreateElement("Price");
            PriceNode1.InnerText = "20";
            bookNode.AppendChild(PriceNode1);

            XmlElement DesNode1 = doc.CreateElement("Des");
            DesNode1.InnerText = "义薄云天";
            bookNode.AppendChild(DesNode1);
             //7.保存
            doc.Save("Books.xml");
            MessageBox.Show("保存成功");

实现一下功能:
在这里插入图片描述

 			XmlDocument doc = new XmlDocument(); //相等于创建了一页白纸
            XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "utf-8", null);//这里是xml文件中的第一行即描述信息行 1.0版本  utf-8解码格式
            doc.AppendChild(declaration);  //将信息添加到doc文档中
            
            XmlElement BooksNode = doc.CreateElement("Books");
            doc.AppendChild(BooksNode);  //将信息添加到doc文档中
            
            XmlElement OverrideNode = doc.CreateElement("CustomerName");
            OverrideNode.InnerText = "信息技术";
            BooksNode.AppendChild(OverrideNode);  //将信息添加到doc文档中

            XmlElement OverrideNode1 = doc.CreateElement("Count");
            BooksNode.AppendChild(OverrideNode1);  //将信息添加到doc文档中

            XmlElement items1 = doc.CreateElement("Item1");
            items1.SetAttribute("name", "zyx");
            items1.SetAttribute("age", "28");
            OverrideNode1.AppendChild(items1);  //将信息添加到doc文档中

            XmlElement items2 = doc.CreateElement("Item1");
            items2.SetAttribute("name", "czq");
            items2.SetAttribute("age", "22");
            OverrideNode1.AppendChild(items2);  //将信息添加到doc文档中
            doc.Save("SaveBoo.xml");
            MessageBox.Show("写入成功");
        }

追加内容

 XmlDocument doc = new XmlDocument();//创建文档对象
            XmlElement books = null; //文档第一行
            XmlElement book1 = null; //根节点
           // XmlElement book11 = null; //根节点的子节点
            if(File.Exists("Books.xml"))//判断Books.xml是否存在
            {
                doc.Load("Books.xml");
                books = doc.DocumentElement; 
            }
            else
            {
                XmlDeclaration newBooks = doc.CreateXmlDeclaration("1.0", "utf-8", null);
                doc.AppendChild(newBooks);
                //创建根节点
                book1 = doc.CreateElement("Books");
                doc.AppendChild(book1);

               
            }

            //如果文件已存在 追加内容 没有创建新的内容
            XmlElement name1 = doc.CreateElement("Name");
            name1.InnerText = "<西游记>";
            book1.AppendChild(name1);

读取子节点

   XmlDocument doc = new XmlDocument();

    //加载读取的XML
    doc.Load("Books.xml");

    //获取根节点
    XmlElement Node = doc.DocumentElement;

    //获取根节点的子节点,返回字节集合
    XmlNodeList node = Node.ChildNodes;
    foreach (XmlNode item in node)
    {
        listNode.AppendText(item.InnerText+"\n");

    }

读取节点属性

XmlDocument doc = new XmlDocument();
            doc.Load("SaveBoo.xml");

            //根据节点查找属性
            XmlNodeList node = doc.SelectNodes("/Books/Count/Item1");//一个节点一个节点找
            foreach (XmlNode item in node)
            {
                listNodes.AppendText(item.Attributes["name"].Value);
                listNodes.AppendText(item.Attributes["age"].Value );
                listNodes.AppendText("\n");

删除节点

XmlDocument doc = new XmlDocument();
            doc.Load("SaveBoo.xml");

            //获取要删除的节点
            XmlNode nodes = doc.SelectSingleNode("/Books/Count");//删除count节点里面的所有东西
            nodes.RemoveAll();
            doc.Save("SaveBoo.xml");

3. 委托

定义委托的关键字:delegate
委托只接收方法

在这里插入图片描述

在这里插入图片描述

委托———匿名函数
当程序要实现一个小功能时,没必要额外写一个方法 ——这时就用到匿名函数

//匿名函数 就是没有函数名称
            //wSayHi who = delegate (string str)
            //{
            //    Console.WriteLine("nihao" + str);
            //};
            //who("zyxiamloveyou");
            //Console.ReadKey();


            //兰姆达表达式  lamdba
            wSayHi who1 = (string name) => { return "你好" + name; };
            Console.WriteLine(who1("zyxiamloveyou"));

练习: 将一个窗体的某些信息 传送到另一个窗体
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值