c# xml 参数配置表的使用

news2024/11/27 0:28:10

使用简介

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
实际使用界面

在这里插入图片描述

配置表管理界面

在这里插入图片描述

进入

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;
        public ModuleGrid()
        {
   
            InitializeComponent();
            uipanelMain.AutoScroll = true;//防止内容过多 当显示不下的时候 可以有滚轮
            //DisplayData();//这个在这里使用不知道为什么就是报错 显示未将对象设置引用到对象实例  我直接放最开始调用
            //MessageBox.Show("kai ");
        }

在这里插入图片描述

        public static ModuleGrid modgrid;
        private void uiButton1_Click(object sender, EventArgs e)
        {
   
            modgrid = new ModuleGrid();
            modgrid.Show();

            ModuleGrid.DisplayData();//这个函数的作用就是新增我们需要的框的控件
        }
       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);
            }
        }
      
 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;
            }
        }

}

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);
        }

确定和返回按键

this.Close();

新增项的按键

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

在这里插入图片描述

编辑

 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的

        }

删除

 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();
        }

新增一个
在这里插入图片描述

        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();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1092634.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

挖机技术哪家强

挖机技术哪家强&#xff0c;中国山东找蓝翔&#xff0c;开挖机是我曾经的梦想&#xff0c;每个男人心中都有一台自己的挖机&#xff0c;近半年做的项目就是关于挖机销售CRM&ERP系统&#xff0c; 今天我们聊聊关于挖机的基本知识。 注&#xff1a;此文并非广告&#xff0c;…

Lua 协程

一、协程 Lua 中使用半协程的方式进行组织代码。 和线程的最大区别在于&#xff0c;一个多线程程序可以并行运行多个线程&#xff0c;而协程却需要彼此协作运行&#xff0c;即任意指定时刻只能一个协程运行&#xff0c;且只有当正在运行的协程显式地要求被挂起时&#xff0c;…

Net6 用imagesharp 实现跨平台图片处理并存入oss

项目要求&#xff1a;生成电子证书 一、模板文件在OSS中&#xff0c;直接加载 二、向模板文件添加二维码 三、向模板文件添加多行文字 四、生成二维码&#xff0c;存入本地&#xff0c; 五、向模板文件添加二维码 代码实现步骤 一、建立.net 6 API项目&#xff0c;安装N…

SpringBoot-黑马程序员-学习笔记(五)

74.自定义bean属性绑定以及第三方bean属性绑定 自定义bean属性绑定 1.自定义一个bean Data Component public class ServerConfig {private String ipAddress;private int port;private long timeout; } 2.在yml配置文件中中定义一组值 3.在bean中进行属性绑定 加上这个注…

【Linux】:Linux环境与版本

以下哪个命令输出Linux内核的版本信息 A.uname -r B.vmstat C.sar D.stat uname -r 查看linux内核版本信息 vmstat 报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息 sar 主要帮助我们掌握系统资源的使用情况&#xff0c;特别是内存和CPU的使用情况 stat 用于显示…

【从零开始学习Redis | 第二篇】Redis中的数据类型和相关命令

前言&#xff1a; Redis是一种快速、高效的开源内存数据库&#xff0c;被广泛用于构建各种类型的应用程序。其被设计成支持多种数据类型&#xff0c;这使得Redis在处理各种场景的数据存储和操作中非常灵活。Redis的数据类型提供了对不同数据结构的直接支持&#xff0c;包括字符…

并查集维护集合 ac240食物链

题目&#xff1a; 代码&#xff1a; #include<iostream> using namespace std; const int N50010; int p[N],d[N]; int n,m;int find(int x){if(p[x]!x){ int ufind(p[x]);d[x] d[p[x]];p[x]u;}return p[x]; }int main(){scanf("%d%d",&n,&m);fo…

Java设计模式之六大设计原则

为什么要学习设计模式&#xff1f; 要知道设计模式就是软件工程的方法经验的总结&#xff0c;也是可以认为是过去一段时间软件工程的一个最佳实践&#xff0c;要理解&#xff0c;不要死记硬背。掌握这些方法后&#xff0c;可以让你的程序获得以下好处&#xff1a; 代码重用性…

SpringCloud-Hystrix

一、介绍 &#xff08;1&#xff09;避免单个服务出现故障导致整个应用崩溃。 &#xff08;2&#xff09;服务降级&#xff1a;服务超时、服务异常、服务宕机时&#xff0c;执行定义好的方法。&#xff08;做别的&#xff09; &#xff08;3&#xff09;服务熔断&#xff1a;达…

学习记忆——题型篇——写作——记忆宫殿法

1&#xff0e;什么是数字记忆法? 答&#xff1a; 数字记忆就是把每一个数字转换成图片编码后再进行联想速记。 2&#xff0e;数字记忆法的用途有哪些&#xff1f; 答&#xff1a; 可以记忆学科知识&#xff0c;如地理、历史等所有学科或考试中的数据信息&#xff1b;可以速记生…

给ChuanhuChatGPT 配上讯飞星火spark大模型V2.0(一)

ChuanhuChatGPT 拥有多端、比较好看的Gradio界面&#xff0c;开发比较完整&#xff1b; 刚好讯飞星火非常大气&#xff0c;免费可以领取大概20w&#xff08;&#xff01;&#xff01;&#xff01;&#xff09;的token&#xff0c;这波必须不亏&#xff0c;整上。 重要参考&am…

中断机制-中断协商机制、中断方法

4.1 线程中断机制 4.1.1 从阿里蚂蚁金服面试题讲起 Java.lang.Thread下的三个方法: 4.1.2 什么是中断机制 首先&#xff0c;一个线程不应该由其他线程来强制中断或停止&#xff0c;而是应该由线程自己自行停止&#xff0c;自己来决定自己的命运&#xff0c;所以&#xff0c;…

创意无限,动画随心——Adobe Animate 2024正式发布!

Adobe Animate 2024是一款全新的多平台动画和互动设计工具&#xff0c;它为用户提供了强大的工具和功能&#xff0c;以创造出各种类型的动画作品。无论是短片、广告、游戏还是交互式应用程序&#xff0c;Animate都能够满足您的需求。 Animate 2024的主要特点包括&#xff1a; …

mysql面试题48:MySQL中 Innodb的事务与日志的实现方式

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官: Innodb的事务与日志的实现方式 以下是InnoDB事务和日志的实现方式的详细说明: 事务日志(Transaction Log): InnoDB使用事务日志来保证事务的…

windows TBB的使用

windows TBB的使用 1. Install with GUI 1. Install with GUI To install oneTBB using GUI, complete the following steps: Go to the Download page.Select the preferred installer Online installer has a smaller file size but requires a permanent Internet connec…

计算机网络 | 网络层

计算机网络 | 网络层 计算机网络 | 网络层功能概述SDN&#xff08;Software-Defined Networking&#xff09;路由算法与路由协议IPv4IPv4 分组IPv4 分组的格式IPv4 数据报分片 参考视频&#xff1a;王道计算机考研 计算机网络 参考书&#xff1a;《2022年计算机网络考研复习指…

前端基础一:用Formdata对象来上传图片的原因

最近有人问&#xff1a;你是否能用json来传图片&#xff0c;其实应该这么理解就对了。 一、上传的数据体格式Content-Type 1.application/x-www-form-urlencoded 2.application/json 3.multipart/form-data 以上三种类型旨在告诉服务器需要接收的数据类型同事要…

企业级CI/CD 持续集成/交付/发布

jenkins 安装与使用 nmcli g hostname jenkins 加载缓存 yum makecache fast 上传jdk11、jdk8 获取、上传war包 1、jenkins.io/download 2.4.27 2、老师发的 上传 maven 上传tomcat软件包 &#xff08;apache.org-tomcat8-下载&#xff09; 注意8009端口 /usr... vi /etc/pro…

「蓝桥·算法双周赛」第一场公开赛

三带一【算法赛】 - 蓝桥云课 (lanqiao.cn) 给定四个字符&#xff0c;判断是否其中有三个相同&#xff0c;另一个与他们不同 #include <bits/stdc.h> void solve() {std::string s;std::cin>>s;char as[0],bs[1],cs[2],ds[3];if(ab&&ac&&a!d) std:…

Puppeteer监听网络请求、爬取网页图片(二)

Puppeteer监听网络请求、爬取网页图片&#xff08;二&#xff09; Puppeteer监听网络请求、爬取网页图片&#xff08;二&#xff09;一、爬取需求二、实现讲解三、效果查看 一、爬取需求 首先打开浏览器&#xff0c;打开指定网站监听网站发出的所有请求&#xff0c;记录请求&a…