将窗体中控件存入XML文件中

我这里需要做中文、英文,通过XmlWriter将控件存入Xml

TextBox、ConboBox之类的控件不存入,因为他是提供输入的,这里主要存入窗体中的label、Button之类的控件属性

 

首先要知道遍历窗体中的控件的方法

 public void VisitAll(Control CrlContainer)        
{

            foreach (Control kCrl in CrlContainer.Controls)
            {

                if (kCrl.Controls.Count > 0)
                {
                    VisitAll(kCrl);

                }
                  //放你要的操作
           }
}



 


 



我写的一个完整的类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Windows.Forms;
namespace Myc.Prj.View
{
    public class CreateXML
    {
        XmlWriter writer;
        bool IsFirst = true, Begin = false;
        Form frm;
        public CreateXML()
        {

        }

        /// <summary>
        /// 生成以窗体Name为名字的XML文件
        /// </summary>
        /// <param name="frm"></param>
        public CreateXML(Form frm)
        {
            this.frm = frm;
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = false;
            settings.NewLineOnAttributes = false;
            writer = XmlWriter.Create(frm.Name + ".xml", settings);
            writer.WriteStartDocument();
            writer.WriteStartElement("View");
            WriteElementXML(frm);
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Flush();
            writer.Close();
        }
        private void WriteElementXML(Control cons)
        {
            if (IsFirst)
            {
                writer.WriteStartElement(cons.Name);
                IsFirst = false;
            }
            else
            {
                Begin = true;
                writer.WriteStartElement("Control");
                writer.WriteAttributeString("name", cons.Name);
                writer.WriteAttributeString("value", cons.Text);
                writer.WriteEndElement();
            }

            foreach (Control con in cons.Controls)
            {
                if (con.Controls.Count > 0 && !(con is DataGridView))//要加&& !(con is DataGridView)否则遍历DataGridView里面的控件
                {
                    WriteElementXML(con);
                }
                if (con.Name == "")
                    continue;
                if (!(con is TextBox) && !(con is ComboBox) && !(con is GroupBox))//这些是不需要的类型,排除GroupBox,否则同一个GroupBox出现两个
                {
                    writer.WriteStartElement("Control");
                    writer.WriteAttributeString("name", con.Name);
                    writer.WriteAttributeString("value", con.Text);
                    writer.WriteEndElement();

                }
            }

            if (!Begin)
            {
                writer.WriteEndElement();
                Begin = false;
            }


        }
    }
}


界面处只需要在构造函数里面new CreateXML(this);

就会生成以窗体Name为名字的XML文件

如果需要存所有的控件只需要将上面的条件去掉即可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值