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"));
练习: 将一个窗体的某些信息 传送到另一个窗体