博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用XML作为配置表,WinForm程序读取配置表来动态显示控件
阅读量:7289 次
发布时间:2019-06-30

本文共 2467 字,大约阅读时间需要 8 分钟。

一、首先创建一个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

你可能感兴趣的文章
路由器怎么设置映射?
查看>>
LayoutAnimation的使用
查看>>
苹果电脑Mac很久不用,accountsd Messages 登陆钥匙串一直提示输入密码 错误
查看>>
jquery获得select option的值 和对select option的操作
查看>>
XSuperNEST——成本小管家
查看>>
Android之Bundle传递数据详解与实例及Bundle与SharedPreferences的区别
查看>>
struts1、 struts2所有版本jar包下载地址大全
查看>>
如何电脑上怎样查看微信聊天记录
查看>>
Thrift 基础架构
查看>>
many-to-many
查看>>
java中的多态
查看>>
Python 函数式编程--装饰器
查看>>
11月28号
查看>>
DAS、NAS、SAN、iSCSI 存储方案概述
查看>>
为VMware esxi主机配置系统日志记录
查看>>
给批量用户设磁盘配额
查看>>
Docker常见问题总结(持续更新)
查看>>
5-6单元练习
查看>>
以普通用户启动的Vim如何保存需要root权限的文件
查看>>
客户端和浏览器都不能连接SVN服务器
查看>>