使用XML作为配置表,WinForm程序读取配置表来动态显示控件
一、首先创建一个XML文件定义以下格式(uName:显示的中文字,uKey:代表控件的Name属性,ukeyValue:代表是否显示)
二、项目中定义一个通用类,来存放读取的值
这三个字段对应XML文件里面的三个属性
三、写一个工具类用来读取XML文件
这样就把XML里面的数据全部取出来放到了刚刚定义的一个通用类集合里面了
四、接下来在窗体里面,我们需要添加一个FlowLayoutPanel容器,用来存放动态添加的控件
对应的后台代码↓↓↓
做完这些,我们运行后就会得到这个页面
五、勾选好需要的选项后,点击保存,保存事件如下:
以上就完成了使用XML作为配置表来保存数据,使用FlowLayoutPanel容器来装载动态添加的控件了。
下面贴出代码:
辅助类
public class XMLs
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string uKey;
public string UKey
{
get { return uKey; }
set { uKey = value; }
}
private int showcheck;
public int Showcheck
{
get { return showcheck; }
set { showcheck = value; }
}
}
工具类
public class ConfigIsShow
{
public List<XMLs> ShowData()
{
List<XMLs> lx = new List<XMLs>();
//实例化一个XML操作对象
XmlDocument xmldoc = new XmlDocument();
string filen = @"ShowConfig.xml";
//载入xml文件名
xmldoc.Load(filen);
//读取根节点的所有子节点,放到xn0中
XmlNodeList xn0 = xmldoc.SelectSingleNode("person").ChildNodes;
//进行循环赋值
foreach (XmlElement oon in xn0)
{
XMLs ser = new XMLs();
ser.Name = oon.GetElementsByTagName("uName")[0].InnerText;
ser.UKey = oon.GetElementsByTagName("uKey")[0].InnerText;
ser.Showcheck = Convert.ToInt32(oon.GetElementsByTagName("ukeyValue")[0].InnerText);
lx.Add(ser);
}
return lx;
}
}
加载事件
public ConfigIsShow cif = new ConfigIsShow();
public ShowFig()
{
InitializeComponent();
//读取XML文件的数据
List<XMLs> xl = cif.ShowData();
//循环
for (int i = 0; i < xl.Count; i++)
{
//实例化复选框
CheckBox ck = new CheckBox();
ck.Size = new Size(100, 30);//设置宽度和高度
ck.Name = xl[i].UKey;//给Name赋值
ck.Text = xl[i].Name;//给文本赋值
//通过获取的0、1值来判断复选框是否选中
ck.Checked = xl[i].Showcheck == 1 ? true : false;
flowLayoutPanel1.Dock = DockStyle.Fill;//设置控件在容器中自适应
flowLayoutPanel1.Width = 320;
flowLayoutPanel1.Controls.Add(ck); //把复选框添加到容器中
}
this.Controls.Add(flowLayoutPanel1);//将容器添加到主窗体中,否则会覆盖整个窗体
}
保存事件
private void button1_Click(object sender, EventArgs e)
{
string filen = @"ShowConfig.xml";//获取文件路径
var doc = XDocument.Load(filen);//得到文件
foreach (Control ctl in flowLayoutPanel1.Controls)//注意,这边循环的是容器,而不是主窗体
{
if (((CheckBox)ctl).Checked == true)//判断是否选中
{
//首先找主节点person,然后控件的Name找到具体的分节点,再直接给分节点里面的ukeyValue赋值
doc.Element("person").Element(ctl.Name).Element("ukeyValue").Value = "1";
}
else
{
doc.Element("person").Element(ctl.Name).Element("ukeyValue").Value = "0";
}
}
doc.Save(filen);//更新文件
ViewHelper.ShowAutoCloseMsg("设置成功!", 1000);
ShowFig agr = new ShowFig();
agr.Close();
base.Dispose();
}
转载于:https://www.cnblogs.com/denuk/p/7156828.html
使用XML作为配置表,WinForm程序读取配置表来动态显示控件相关推荐
- spark学习 Java版SparkSQL程序读取Hbase表注册成表SQL查询
参考: spark学习-SparkSQL–11-scala版写的SparkSQL程序读取Hbase表注册成表SQL查询 http://blog.csdn.net/qq_21383435/article ...
- java程序获取外部java程序的控件,将 Java 小程序迁移到 Microsoft J# 浏览器控件-JSP教程,Java技巧及代码...
visual j# .net 小组 microsoft corporation 摘要:通过 microsoft j# 浏览器控件,开发人员可以将所编写的在 java 虚拟机上运行的 java 小程序迁 ...
- vs2015+opencv3.2+mfc读取摄像头显示在图片控件Picture Control
vs2015 + opencv3.3 + mfc读取摄像头显示在图片控件Picture Control 要开始做一个行人检测的小项目,首先读取出摄像头显示,参考了这位博主的教程:http : //bl ...
- WinForm界面开发之“HTML内容编辑控件”
做过了很多Winform的共享软件,对界面的设计有了一定的经验和积累,准备开一个"WinForm界面开发"系列文章,介绍下相关的Winform界面设计和相关控件的使用,促进相互交流 ...
- 【jeecg-boot项目开发crm】:day07JeecgBoot-零基础入门视频-05Online表单自定义按钮与JS增强Popup控件Online报表【p5】
Online表单自定义按钮与JS增强&Popup控件&Online报表[p5] Online表单自定义按钮与JS增强 JS增强的作用 实现一些复杂的页面效果:页面的动态计算,页面字段的 ...
- 一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图(6)--添加控件到Flight Delay表单
准备:打开之前创建的Flight Delay表单.也可以下载Flight Delay Post exercise 1.xsn.右击模板文件,选择设计. 本练习,继续创建Flight Delay表单.添 ...
- winform程序读取和改写配置文件App.config元素的值
在开发Web项目的时候,会有一个配置文件Web.config,用来存放一些全局的变量,如连接数据库用的字符串.相应的,在开发winform程序时,也有一个配置文件,它就是App.config,这个文件 ...
- C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面...
个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...
- 如何使用AWS和Azure的配置存储服务保存读取配置
原文:Want to yank configuration values from your .NET Core apps? 作者:pauljwheeler 译文:https://www.cnblog ...
最新文章
- IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表
- zip与zip(*)
- 【联邦学习】FATE 集群部署 step1
- query上传插件uploadify参数详细分析
- 【Java】时间的新旧比较
- Python简化代码的操作有哪些
- 如何使用Xpose绕过APP自定义证书验证去抓Https包
- Python 之 PyCharm + selenium 163邮箱登录详解
- u盘安装原版window10系统
- linux服务器安装虚拟桌面,并可视化连接远程桌面
- Win系统使用WSL子系统Linux启动vGPU增强图形性能加速OpenGL
- android关于消防栓的正确使用
- cmd看excel有多少个子表_excel表格拆分成多个表格方法工具
- Android 11.0 Camera2 默认选择拍照尺寸修改及流程分析
- Windows系统中苹果ipa上传到App Store Connect
- mysql中有几种模糊查询?
- 如何能让英语水平在一年半载内得到大幅提升?(备注下)
- 快应用开发1--编译官方的代码并在手机上运行rpk文件(Windows系统上)
- [转] meta标签的使用方法
- 基于雷达的安防视频监控系统软件设计
热门文章
- 新版数据库分页方法(Sql server2012)
- [转载] 民兵葛二蛋——第2集
- java十五章_java:第十五章
- composer查看当前镜像取消_配置和查看composer镜像
- 这些 Shell 分析服务器日志命令集锦,收藏好
- 单片机自学多久可以成功?学单片机需要什么基础知识?
- python在bim中的应用_Revit元素类别——Dynamo Python系列教程(六)
- RNN情感分类问题实战
- 关于Python的一点学习总结(55-time的使用)
- [CTSC2018]混合果汁 二分 套 主席树上二分