c# xml 参数配置表的使用

使用简介


实际使用界面

配置表管理界面

进入

csharp 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Sunny.UI;
using System.Xml;
using System.IO;
csharp 复制代码
        public ModuleGrid()
        {
            InitializeComponent();
            uipanelMain.AutoScroll = true;//防止内容过多 当显示不下的时候 可以有滚轮
            //DisplayData();//这个在这里使用不知道为什么就是报错 显示未将对象设置引用到对象实例  我直接放最开始调用
            //MessageBox.Show("kai ");
        }
csharp 复制代码
        public static ModuleGrid modgrid;
        private void uiButton1_Click(object sender, EventArgs e)
        {
            modgrid = new ModuleGrid();
            modgrid.Show();

            ModuleGrid.DisplayData();//这个函数的作用就是新增我们需要的框的控件
        }
csharp 复制代码
       private static int width = 360;
        private static int height = 254;
        private static List<GridContent> list;
        public static string path = Directory.GetCurrentDirectory()+ "\\ParameterSet\\grid.xml";
        public static void DisplayData()
        {
            try
            {
                list = new List<GridContent>();
                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                XmlNodeList nodeList = doc.SelectNodes("/person/list");//xPath相关手册,找节点person的list
                int index = 1;
                foreach (XmlNode node in nodeList)
                {
                    string no = node.Attributes["no"].Value;
                    string modeName = node.SelectSingleNode("modeName").InnerText;
                    //MessageBox.Show("modeName:" + modeName);
                    GridContent grid = new GridContent();
                    grid.No = no;

                    list.Add(grid);
                    addUIItem(index, modeName);//UI增加
                    index++;
                }
            }
            catch (Exception ex)
            {
                log.SaveLog(@"报告模板异常:" + ex.Message);
            }
        }
      
csharp 复制代码
 class GridContent
    {
       


        private string modeName;
        private string no;

        public string ModeName
        {
            get
            {
                return modeName;
            }

            set
            {
                modeName = value;
            }
        }

        public string No
        {
            get
            {
                return no;
            }

            set
            {
                no = value;
            }
        }

}
csharp 复制代码
private static void addUIItem(int index, string modeName)
        {
            //1724 -50 - 4*width =   78
            UIPanel paneln = new UIPanel();
            int curIndex = index / 4;
            int mod = index % 4;
            int pointX = (width + 65) * (mod) + 25;
            int pointY = curIndex * (height) + (curIndex + 1) * 25;
            paneln.Location = new Point(pointX, pointY);
            paneln.Size = new Size(width, height);
            paneln.FillColor = Color.White;
            paneln.RectColor = ColorTranslator.FromHtml("#D6D6D6");

            UILabel label = new UILabel();
            label.AutoSize = false;
            label.Text = modeName;
            label.Location = new Point(40, 20);
            label.Size = new Size(300, 90);
            label.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            label.TextAlign = ContentAlignment.MiddleCenter;

            UIButton btnDel = new UIButton();
            btnDel.Size = new Size(100, 50);
            btnDel.Location = new Point(50, 170);
            btnDel.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            btnDel.FillColor = Color.White;
            btnDel.RectColor = ColorTranslator.FromHtml("#D6D6D6");
            btnDel.ForeColor = ColorTranslator.FromHtml("#333333");
            btnDel.Text = "删除";
            btnDel.Tag = list[index - 1].No;
            btnDel.Click += new System.EventHandler(btnDel_Click);

            UIButton btnEdit = new UIButton();
            btnEdit.Size = new Size(100, 50);
            btnEdit.Location = new Point(220, 170);
            btnEdit.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            btnEdit.FillColor = Color.White;
            btnEdit.RectColor = ColorTranslator.FromHtml("#D6D6D6");
            btnEdit.ForeColor = ColorTranslator.FromHtml("#333333");
            btnEdit.Text = "编辑";
            btnEdit.Tag = list[index - 1].No;
            btnEdit.Click += new EventHandler(btnEdit_Click);

            paneln.Controls.Add(label);
            paneln.Controls.Add(btnDel);
            paneln.Controls.Add(btnEdit);
            Form1.modgrid.uipanelMain.Controls.Add(paneln);
        }

确定和返回按键

csharp 复制代码
this.Close();

新增项的按键

在进入的addUIItem函数里面添加的

编辑

csharp 复制代码
 private static void btnEdit_Click(object sender, EventArgs e)
        {
            UIButton btn = (UIButton)sender;
            string no = btn.Tag.ToString();
            //  new AddModule("edit", no, uipanelMain).Show();

            AddModule frm = new AddModule("edit", no, Form1.modgrid.uipanelMain);    
            frm.Show();
            Form1.modgrid.Hide();//如果是关闭 那么下次是无法show的

        }

删除

csharp 复制代码
 private static void btnDel_Click(object sender, EventArgs e)
        {
            UIButton btn = (UIButton)sender;
            string no = btn.Tag.ToString();
            delUI();
            delGridItem(no);
            //this.Invalidate();
            //this.Refresh();
        }

   public static void delUI()
        {
            int index = 0;
            for (int i = list.Count() - 1; i >= 0; i--)
            {
                index = (i + 1);
                Form1.modgrid.uipanelMain.Controls.RemoveAt(index);

            }
        }

private static void delGridItem(string no)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(path);
            XmlElement root = doc.DocumentElement;
            XmlNodeList xmlNodeList = doc.SelectNodes("/person/list[@no='" + no + "']");
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                xmlNode.ParentNode.RemoveChild(xmlNode);
            }
            doc.Save(path);
            DisplayData();
        }

新增一个

csharp 复制代码
        private void uiPanel3_Click(object sender, EventArgs e)
        {
            OpenAddModule();
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            OpenAddModule();
        }

        private void uiLabel3_Click(object sender, EventArgs e)
        {
            OpenAddModule();
        }
        
        public static void OpenAddModule()
        {
            AddModule frm = new AddModule("add", "", Form1.modgrid.uipanelMain);
            frm.Show();
            Form1.modgrid.Hide();//如果是关闭 那么下次是无法show的
        }

页面传递讲解

csharp 复制代码
        public static void OpenAddModule()
        {
            AddModule frm = new AddModule("add", "", Form1.modgrid.uipanelMain);
            frm.Show();
            Form1.modgrid.Hide();//如果是关闭 那么下次是无法show的
        }

要打开的界面 给他一个带参数的构造函数就可以了

csharp 复制代码
        string no;
        UIPanel uipanel;
        string type;
        public static string path = Directory.GetCurrentDirectory() + "\\ParameterSet\\grid.xml";
        public AddModule(string type, string no, UIPanel uipanel)//这三个参数都是自己新加的 不然是没有参数的 用于上一页面传入参数进来
        {
            InitializeComponent();

            this.no = no;
            this.type = type;
            this.uipanel = uipanel;
            if (type.Equals("add"))
            {
                labelTItle.Text = "新增配置表";
            }
            else if (type.Equals("edit"))
            {
                try
                {
                    labelTItle.Text = "编辑配置表";
                    //赋值
                    XmlDocument doc = new XmlDocument();
                    doc.Load(path);
                    XmlNodeList xmlNodeList = doc.SelectNodes("/person/list[@no='" + no + "']");
                    XmlNode node = xmlNodeList[0];

                    tmodelName.Text = node.SelectSingleNode("modeName").InnerText;
                    clientTextBox.Text = node.SelectSingleNode("client").InnerText;
                    hardwareTextBox.Text = node.SelectSingleNode("hardware").InnerText;
                    softwareTextBox.Text = node.SelectSingleNode("software").InnerText;
                    tongshuTextBox.Text = node.SelectSingleNode("tongshu").InnerText;
                    kongshuTextBox.Text = node.SelectSingleNode("kongshu").InnerText;
                    TMCuiTextBox.Text = node.SelectSingleNode("tmc").InnerText;
                    typeuiTextBox.Text = node.SelectSingleNode("type").InnerText;

                    order1TextBox.Text = node.SelectSingleNode("order1").InnerText;
                    order2TextBox.Text = node.SelectSingleNode("order2").InnerText;
                    order3TextBox.Text = node.SelectSingleNode("order3").InnerText;
                    order4TextBox.Text = node.SelectSingleNode("order4").InnerText;
                    order5TextBox.Text = node.SelectSingleNode("order5").InnerText;
                    order6TextBox.Text = node.SelectSingleNode("order6").InnerText;
                    order7TextBox.Text = node.SelectSingleNode("order7").InnerText;
                    order8TextBox.Text = node.SelectSingleNode("order8").InnerText;
                    order9TextBox.Text = node.SelectSingleNode("order9").InnerText;
                    order10TextBox.Text = node.SelectSingleNode("order10").InnerText;
                    order11TextBox.Text = node.SelectSingleNode("order11").InnerText;
                    order12TextBox.Text = node.SelectSingleNode("order12").InnerText;
                    order13TextBox.Text = node.SelectSingleNode("order13").InnerText;
                }
                catch (Exception ex)
                {
                    log.SaveLog(ex.ToString());
                    throw;
                }


            }
        }

新增页面

csharp 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using Sunny.UI;

构造函数

可以进行参数的传递

csharp 复制代码
        string no;
        UIPanel uipanel;
        string type;
        public static string path = Directory.GetCurrentDirectory() + "\\ParameterSet\\grid.xml";
        public AddModule(string type, string no, UIPanel uipanel)//这三个参数都是自己新加的 不然是没有参数的 用于上一页面传入参数进来
        {
            InitializeComponent();

            this.no = no;
            this.type = type;
            this.uipanel = uipanel;
            if (type.Equals("add"))
            {
                labelTItle.Text = "新增配置表";
            }
            else if (type.Equals("edit"))
            {
                try
                {
                    labelTItle.Text = "编辑配置表";
                    //赋值
                    XmlDocument doc = new XmlDocument();
                    doc.Load(path);
                    XmlNodeList xmlNodeList = doc.SelectNodes("/person/list[@no='" + no + "']");
                    XmlNode node = xmlNodeList[0];

                    tmodelName.Text = node.SelectSingleNode("modeName").InnerText;
                    clientTextBox.Text = node.SelectSingleNode("client").InnerText;
                    hardwareTextBox.Text = node.SelectSingleNode("hardware").InnerText;
                    softwareTextBox.Text = node.SelectSingleNode("software").InnerText;
                    tongshuTextBox.Text = node.SelectSingleNode("tongshu").InnerText;
                    kongshuTextBox.Text = node.SelectSingleNode("kongshu").InnerText;
                    TMCuiTextBox.Text = node.SelectSingleNode("tmc").InnerText;
                    typeuiTextBox.Text = node.SelectSingleNode("type").InnerText;

                    order1TextBox.Text = node.SelectSingleNode("order1").InnerText;
                    order2TextBox.Text = node.SelectSingleNode("order2").InnerText;
                    order3TextBox.Text = node.SelectSingleNode("order3").InnerText;
                    order4TextBox.Text = node.SelectSingleNode("order4").InnerText;
                    order5TextBox.Text = node.SelectSingleNode("order5").InnerText;
                    order6TextBox.Text = node.SelectSingleNode("order6").InnerText;
                    order7TextBox.Text = node.SelectSingleNode("order7").InnerText;
                    order8TextBox.Text = node.SelectSingleNode("order8").InnerText;
                    order9TextBox.Text = node.SelectSingleNode("order9").InnerText;
                    order10TextBox.Text = node.SelectSingleNode("order10").InnerText;
                    order11TextBox.Text = node.SelectSingleNode("order11").InnerText;
                    order12TextBox.Text = node.SelectSingleNode("order12").InnerText;
                    order13TextBox.Text = node.SelectSingleNode("order13").InnerText;
                }
                catch (Exception ex)
                {
                    log.SaveLog(ex.ToString());
                    throw;
                }
            }
        }

load函数

进行一次自动的指令到指令名称的转换。如果该指令不等于0的话就进行一次转换

csharp 复制代码
 private void AddModule_Load(object sender, EventArgs e)
        {
            try
            {
                if (order1TextBox.Text != "0")
                {
                    order1uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*'))));
                    //log.SaveLog("指令转换1字符串:" + order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*')));
                    //for (int i = 0; i < 5; i++)
                    //{
                    //    log.SaveLog("转字节{i}:" + Form1.strToToHexByte(order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*')))[i]);
                    //}

                }
                if (order2TextBox.Text != "0")
                {
                    order2uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order2TextBox.Text.Substring(0, order2TextBox.Text.IndexOf('*'))));
                }
                if (order3TextBox.Text != "0")
                {
                    order3uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order3TextBox.Text.Substring(0, order3TextBox.Text.IndexOf('*'))));
                }

                if (order4TextBox.Text != "0")
                {
                    order4uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order4TextBox.Text.Substring(0, order4TextBox.Text.IndexOf('*'))));
                }

                if (order5TextBox.Text != "0")
                {
                    order5uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order5TextBox.Text.Substring(0, order5TextBox.Text.IndexOf('*'))));
                }

                if (order6TextBox.Text != "0")
                {
                    order6uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order6TextBox.Text.Substring(0, order6TextBox.Text.IndexOf('*'))));
                }

                if (order7TextBox.Text != "0")
                {
                    order7uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order7TextBox.Text.Substring(0, order7TextBox.Text.IndexOf('*'))));
                }

                if (order8TextBox.Text != "0")
                {
                    order8uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order8TextBox.Text.Substring(0, order8TextBox.Text.IndexOf('*'))));
                }

                if (order9TextBox.Text != "0")
                {
                    order9uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order9TextBox.Text.Substring(0, order9TextBox.Text.IndexOf('*'))));
                }

                if (order10TextBox.Text != "0")
                {
                    order10uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order10TextBox.Text.Substring(0, order10TextBox.Text.IndexOf('*'))));
                }

                if (order11TextBox.Text != "0")
                {
                    order11uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order11TextBox.Text.Substring(0, order11TextBox.Text.IndexOf('*'))));
                }

                if (order12TextBox.Text != "0")
                {
                    order12uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order12TextBox.Text.Substring(0, order12TextBox.Text.IndexOf('*'))));
                }
                if (order13TextBox.Text != "0")
                {
                    order13uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order13TextBox.Text.Substring(0, order13TextBox.Text.IndexOf('*'))));
                }

            }
            catch (Exception ex)
            {
                log.SaveLog("配置表转换报错:" + ex.Message);
            }
        }

字符串转字节

csharp 复制代码
        public static byte[] strToToHexByte(string hexString)
        {
            hexString = hexString.Replace(" ", "");//去掉空格
            if ((hexString.Length % 2) != 0)
                hexString += " ";
            byte[] returnBytes = new byte[hexString.Length / 2];//字符串两个就是一个十六进制数
            for (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            return returnBytes;
        }

根据第二个字节进行对应指令的查找

csharp 复制代码
public static string judgeFun(byte[] a)
        {
            string orderName = "0";
            if (a[2] == 1){orderName = "恢复出厂设置";}
            else if (a[2] == 2) {  orderName = "设置本机地址"; }
            else if (a[2] == 3) { orderName = "读取本机地址"; }
            else if (a[2] == 4) { orderName = "设置波特率"; }
            else if (a[2] == 5) { orderName = "复位"; }
            else if (a[2] == 6) { orderName = "切换通道"; }
            else if (a[2] == 7) { orderName = "读当前通道"; }
            else if (a[2] == 8) { orderName = "读版本"; }
            else if (a[2] == 9) { orderName = "设置CRC校验"; }
            else if (a[2] == 0xA) { orderName = "查询最大通道"; }
            else if (a[2] == 0xB) { orderName = "设置最大通道"; }
            else if (a[2] == 0xC) { orderName = "查正向补偿"; }
            else if (a[2] == 0xE) { orderName = "查反向补偿"; }
            else if (a[2] == 10) { orderName = "查通讯方式"; }
            else if (a[2] == 11) { orderName = "设置通讯方式";}
            else if (a[2] == 12) {orderName = "查电机最小速度";}
            else if (a[2] == 13) {orderName = "设置电机最小速度";}
            else if (a[2] == 14) {orderName = "查电机最大速度";}
            else if (a[2] == 15) {orderName = "设置电机最大速度";}
            else if (a[2] == 16) {orderName = "查丢步报错阈值";}
            else if (a[2] == 17) {orderName = "设置丢步报错阈值";}
            else if (a[2] == 80) {orderName = "常规报错";}
            else if (a[2] == 81) {orderName = "电机正向失步";}
            else if (a[2] == 82) {orderName = "电机反向失步";}
            else if (a[2] == 83) {orderName = "异常断电未归零";}
            else if (a[2] == 18) {orderName = "查磁场强度";}
            else if (a[2] == 19) {orderName = "磁编校准";}
            return orderName;
            }

确定按钮

csharp 复制代码
 private void uiButton1_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            if (type.Equals("add"))
            {
                log.SaveLog(@"新增模板");
                DateTime dt = new DateTime();
                dt = System.DateTime.Now;
                //此处的大小写必须完全按照如下才能输出长日期长时间,时间为24小时制式,hh:mm:ss格式输出12小时制式时间
                string no = dt.ToString("yyyyMMddHHmmss");

                if (!File.Exists(path))
                {
                    //新建一个xml文档
                    //1、实例化一个XmlDocument
                    XmlDeclaration xnode = doc.CreateXmlDeclaration("1.0", "UTF-8", "");
                    doc.AppendChild(xnode);
                    XmlElement root = doc.CreateElement("person");
                    doc.AppendChild(root);

                    XmlElement newElement = doc.CreateElement("list");
                    newElement.SetAttribute("no", no);//添加属性
                    root.AppendChild(newElement);

                    XmlElement modeName = doc.CreateElement("modeName");
                    modeName.InnerText = tmodelName.Text;
                    newElement.AppendChild(modeName);

                    XmlElement client = doc.CreateElement("client");
                    client.InnerText = clientTextBox.Text;
                    newElement.AppendChild(client);


                    XmlElement hardware = doc.CreateElement("hardware");
                    hardware.InnerText = hardwareTextBox.Text;
                    newElement.AppendChild(hardware);

                    XmlElement software = doc.CreateElement("software");
                    software.InnerText = softwareTextBox.Text;
                    newElement.AppendChild(software);


                    XmlElement tongshu = doc.CreateElement("tongshu");
                    tongshu.InnerText = tongshuTextBox.Text;
                    newElement.AppendChild(tongshu);


                    XmlElement kongshu = doc.CreateElement("kongshu");
                    kongshu.InnerText = kongshuTextBox.Text;
                    newElement.AppendChild(kongshu);

                    XmlElement TMC = doc.CreateElement("tmc");
                    TMC.InnerText = tongshuTextBox.Text;
                    newElement.AppendChild(TMC);


                    XmlElement type = doc.CreateElement("type");
                    type.InnerText = kongshuTextBox.Text;
                    newElement.AppendChild(type);

                    XmlElement order1 = doc.CreateElement("order1");
                    order1.InnerText = order1TextBox.Text;
                    newElement.AppendChild(order1);

                    XmlElement order2 = doc.CreateElement("order2");
                    order2.InnerText = order2TextBox.Text;
                    newElement.AppendChild(order2);

                    XmlElement order3 = doc.CreateElement("order3");
                    order3.InnerText = order3TextBox.Text;
                    newElement.AppendChild(order3);

                    XmlElement order4 = doc.CreateElement("order4");
                    order4.InnerText = order4TextBox.Text;
                    newElement.AppendChild(order4);

                    XmlElement order5 = doc.CreateElement("order5");
                    order5.InnerText = order5TextBox.Text;
                    newElement.AppendChild(order5);

                    XmlElement order6= doc.CreateElement("order6");
                    order6.InnerText = order6TextBox.Text;
                    newElement.AppendChild(order6);

                    XmlElement order7 = doc.CreateElement("order7");
                    order7.InnerText = order7TextBox.Text;
                    newElement.AppendChild(order7);

                    XmlElement order8 = doc.CreateElement("order8");
                    order8.InnerText = order8TextBox.Text;
                    newElement.AppendChild(order8);

                    XmlElement order9 = doc.CreateElement("order9");
                    order9.InnerText = order9TextBox.Text;
                    newElement.AppendChild(order9);

                    XmlElement order10 = doc.CreateElement("order10");
                    order10.InnerText = order10TextBox.Text;
                    newElement.AppendChild(order10);

                    XmlElement order11 = doc.CreateElement("order11");
                    order11.InnerText = order11TextBox.Text;
                    newElement.AppendChild(order11);

                    XmlElement order12 = doc.CreateElement("order12");
                    order12.InnerText = order12TextBox.Text;
                    newElement.AppendChild(order12);

                    XmlElement order13 = doc.CreateElement("order13");
                    order13.InnerText = order13TextBox.Text;
                    newElement.AppendChild(order13);

                    root.AppendChild(newElement);

                    doc.Save(path);//注意这个的save路径是需要加上 .xml的

                    this.Close();
                    Form1.modgrid.Show();
                }
                else
                {
                    doc.Load(path);
                    XmlElement root = doc.DocumentElement;
                    XmlElement newElement = doc.CreateElement("list");
                    newElement.SetAttribute("no", no);//添加属性
                    root.AppendChild(newElement);

                    XmlElement modeName = doc.CreateElement("modeName");
                    modeName.InnerText = tmodelName.Text;
                    newElement.AppendChild(modeName);

                    XmlElement client = doc.CreateElement("client");
                    client.InnerText = clientTextBox.Text;
                    newElement.AppendChild(client);


                    XmlElement hardware = doc.CreateElement("hardware");
                    hardware.InnerText = hardwareTextBox.Text;
                    newElement.AppendChild(hardware);

                    XmlElement software = doc.CreateElement("software");
                    software.InnerText = softwareTextBox.Text;
                    newElement.AppendChild(software);


                    XmlElement tongshu = doc.CreateElement("tongshu");
                    tongshu.InnerText = tongshuTextBox.Text;
                    newElement.AppendChild(tongshu);


                    XmlElement kongshu = doc.CreateElement("kongshu");
                    kongshu.InnerText = kongshuTextBox.Text;
                    newElement.AppendChild(kongshu);

                    XmlElement TMC = doc.CreateElement("tmc");
                    TMC.InnerText = tongshuTextBox.Text;
                    newElement.AppendChild(TMC);


                    XmlElement type = doc.CreateElement("type");
                    type.InnerText = kongshuTextBox.Text;
                    newElement.AppendChild(type);

                    XmlElement order1 = doc.CreateElement("order1");
                    order1.InnerText = order1TextBox.Text;
                    newElement.AppendChild(order1);

                    XmlElement order2 = doc.CreateElement("order2");
                    order2.InnerText = order2TextBox.Text;
                    newElement.AppendChild(order2);

                    XmlElement order3 = doc.CreateElement("order3");
                    order3.InnerText = order3TextBox.Text;
                    newElement.AppendChild(order3);

                    XmlElement order4 = doc.CreateElement("order4");
                    order4.InnerText = order4TextBox.Text;
                    newElement.AppendChild(order4);

                    XmlElement order5 = doc.CreateElement("order5");
                    order5.InnerText = order5TextBox.Text;
                    newElement.AppendChild(order5);

                    XmlElement order6 = doc.CreateElement("order6");
                    order6.InnerText = order6TextBox.Text;
                    newElement.AppendChild(order6);

                    XmlElement order7 = doc.CreateElement("order7");
                    order7.InnerText = order7TextBox.Text;
                    newElement.AppendChild(order7);

                    XmlElement order8 = doc.CreateElement("order8");
                    order8.InnerText = order8TextBox.Text;
                    newElement.AppendChild(order8);

                    XmlElement order9 = doc.CreateElement("order9");
                    order9.InnerText = order9TextBox.Text;
                    newElement.AppendChild(order9);

                    XmlElement order10 = doc.CreateElement("order10");
                    order10.InnerText = order10TextBox.Text;
                    newElement.AppendChild(order10);

                    XmlElement order11 = doc.CreateElement("order11");
                    order11.InnerText = order11TextBox.Text;
                    newElement.AppendChild(order11);

                    XmlElement order12 = doc.CreateElement("order12");
                    order12.InnerText = order12TextBox.Text;
                    newElement.AppendChild(order12);

                    XmlElement order13 = doc.CreateElement("order13");
                    order13.InnerText = order13TextBox.Text;
                    newElement.AppendChild(order13);

                    root.AppendChild(newElement);

                    this.Close();
                    Form1.modgrid.Show();
                }
            }
            else if (type.Equals("edit"))
            {

                log.SaveLog(@"编辑模板");
                doc.Load(path);
                XmlNodeList xmlNodeList = doc.SelectNodes("/person/list[@no='" + no + "']");

                xmlNodeList[0].SelectSingleNode("modeName").InnerText = tmodelName.Text;
                xmlNodeList[0].SelectSingleNode("client").InnerText = clientTextBox.Text;
                xmlNodeList[0].SelectSingleNode("hardware").InnerText = hardwareTextBox.Text;
                xmlNodeList[0].SelectSingleNode("software").InnerText = softwareTextBox.Text;
                xmlNodeList[0].SelectSingleNode("tongshu").InnerText = tongshuTextBox.Text;
                xmlNodeList[0].SelectSingleNode("kongshu").InnerText = kongshuTextBox.Text;
                xmlNodeList[0].SelectSingleNode("tmc").InnerText = TMCuiTextBox.Text;
                xmlNodeList[0].SelectSingleNode("type").InnerText = typeuiTextBox.Text;

                xmlNodeList[0].SelectSingleNode("order1").InnerText = order1TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order2").InnerText = order2TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order3").InnerText = order3TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order4").InnerText = order4TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order5").InnerText = order5TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order6").InnerText = order6TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order7").InnerText = order7TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order8").InnerText = order8TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order9").InnerText = order9TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order10").InnerText = order10TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order11").InnerText = order11TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order12").InnerText = order12TextBox.Text;
                xmlNodeList[0].SelectSingleNode("order13").InnerText = order13TextBox.Text;
            }
            doc.Save(path);
            ModuleGrid.delUI();
            ModuleGrid.DisplayData();

            this.Close();
            Form1.modgrid.Show();
        }

返回

csharp 复制代码
        private void uiButton2_Click(object sender, EventArgs e)
        {
            this.Close();
            Form1.modgrid.Show();
        }

转换

csharp 复制代码
 private void uiButton3_Click(object sender, EventArgs e)
        {
            try
            {
                if (order1TextBox.Text!="0")
                {
                    order1uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*'))));
                    //log.SaveLog("指令转换1字符串:" + order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*')));
                    //for (int i = 0; i < 5; i++)
                    //{
                    //    log.SaveLog("转字节{i}:" + Form1.strToToHexByte(order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*')))[i]);
                    //}
                    
                }
                if (order2TextBox.Text != "0")
                {
                    order2uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order2TextBox.Text.Substring(0, order2TextBox.Text.IndexOf('*'))));
                }             
                if (order3TextBox.Text != "0")
                {
                    order3uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order3TextBox.Text.Substring(0, order3TextBox.Text.IndexOf('*'))));
                }
                
                if (order4TextBox.Text != "0")
                {
                   order4uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order4TextBox.Text.Substring(0, order4TextBox.Text.IndexOf('*'))));
                }
                
                if (order5TextBox.Text != "0")
                {
                    order5uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order5TextBox.Text.Substring(0, order5TextBox.Text.IndexOf('*'))));
                }
               
                if (order6TextBox.Text != "0")
                {
                    order6uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order6TextBox.Text.Substring(0, order6TextBox.Text.IndexOf('*'))));
                }
                
                if (order7TextBox.Text != "0")
                {
                    order7uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order7TextBox.Text.Substring(0, order7TextBox.Text.IndexOf('*'))));
                }
                
                if (order8TextBox.Text != "0")
                {
                    order8uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order8TextBox.Text.Substring(0, order8TextBox.Text.IndexOf('*'))));
                }
                
                if (order9TextBox.Text != "0")
                {
                    order9uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order9TextBox.Text.Substring(0, order9TextBox.Text.IndexOf('*'))));
                }
                
                if (order10TextBox.Text != "0")
                {
                    order10uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order10TextBox.Text.Substring(0, order10TextBox.Text.IndexOf('*'))));
                }
                
                if (order11TextBox.Text != "0")
                {
                    order11uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order11TextBox.Text.Substring(0, order11TextBox.Text.IndexOf('*'))));
                }
               
                if (order12TextBox.Text != "0")
                {
                    order12uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order12TextBox.Text.Substring(0, order12TextBox.Text.IndexOf('*'))));
                }
                if (order13TextBox.Text != "0")
                {
                    order13uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order13TextBox.Text.Substring(0, order13TextBox.Text.IndexOf('*'))));
                }
                
            }
            catch (Exception ex)
            {
                log.SaveLog("配置表转换报错:" + ex.Message);
            }

        }

使用界面

读配置表

csharp 复制代码
private void uiButton6_Click(object sender, EventArgs e)
        {
            try
            {
                string str = uiComboBox1.Text.Trim();
                index = 0;
                if (str == String.Empty)
                {
                    MessageBox.Show("请先选择配置表");
                    return;
                }
                else
                {
                    //发送指令
                    string no = "0";
                    XmlDocument doc = new XmlDocument();
                    doc.Load(AddModule.path);
                    XmlNodeList nodeList = doc.SelectNodes("/person/list");//xPath相关手册,找节点person的list    
                    foreach (XmlNode node1 in nodeList)
                    {
                        string modeName = node1.SelectSingleNode("modeName").InnerText;

                        if (modeName == uiComboBox1.Text)
                        {
                            no = node1.Attributes["no"].Value;
                            break;
                        }
                        else
                        {
                            continue;
                        }
                    }
                    if (no == "0")
                    {
                        return;
                        MessageBox.Show("未读取到配置表");
                    }

                    xmlNodeList = doc.SelectNodes("/person/list[@no='" + no + "']");
                    node = xmlNodeList[0];

                    label2.Text= "客户:"+node.SelectSingleNode("client").InnerText;
                    label3.Text = "TMC/磁编:" + node.SelectSingleNode("tmc").InnerText;
                    label4.Text = "型号:" + node.SelectSingleNode("type").InnerText;
                    label5.Text = "通数:" + node.SelectSingleNode("tongshu").InnerText;

                    uiButton4.Enabled = true;
                    uiButton8.Enabled = true;
                    tableFlag = true;

                }

            }
            catch (Exception ex)
            {

                throw;
            }
        }

选择配置按钮点击

更新一下有哪些配置表

csharp 复制代码
        private void uiComboBox1_ButtonClick(object sender, EventArgs e)
        { 
            UpdateCfgTable();
        }
csharp 复制代码
 public static string path = Directory.GetCurrentDirectory()+ "\\ParameterSet\\grid.xml";
        public void UpdateCfgTable()
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(ModuleGrid.path);
            XmlNodeList nodeList = doc.SelectNodes("/person/list");//xPath相关手册,找节点person的list
            uiComboBox1.Items.Clear();
            foreach (XmlNode node in nodeList)
            {
                string modeName = node.SelectSingleNode("modeName").InnerText;
                uiComboBox1.Items.Add(modeName);
                uiComboBox1.Text = modeName;
            }
        }
相关推荐
九鼎科技-Leo16 分钟前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
转世成为计算机大神26 分钟前
易考八股文之Java中的设计模式?
java·开发语言·设计模式
宅小海1 小时前
scala String
大数据·开发语言·scala
qq_327342731 小时前
Java实现离线身份证号码OCR识别
java·开发语言
锅包肉的九珍1 小时前
Scala的Array数组
开发语言·后端·scala
心仪悦悦1 小时前
Scala的Array(2)
开发语言·后端·scala
yqcoder1 小时前
reactflow 中 useNodesState 模块作用
开发语言·前端·javascript
Heaphaestus,RC1 小时前
【Unity3D】获取 GameObject 的完整层级结构
unity·c#
baivfhpwxf20231 小时前
C# 5000 转16进制 字节(激光器串口通讯生成指定格式命令)
开发语言·c#
许嵩661 小时前
IC脚本之perl
开发语言·perl