C# 利用xml生成控件
2015-06-12 16:03
429 查看
这二天 在写xml生成控件 大致的意思是这样 但是控件属性一多 需要判断 和读写的东西就多了 还不是太深刻 先记下这2天的东西!
先展示xml的格式
一些简单的控件 和他属性 现在 怎么能通过读写xml生成控件呢
**调用 了 xmlform这个方法
人太懒 没打注释 反正很容易看明白!重点内容*重点内容*
先展示xml的格式
<?xml version="1.0" encoding="utf-8"?> <XmlDataForm Name="Form1" Text="Form1" ClientSize="587,428" DataEntity=""> <Controls> <DataGridView name="dataGridView1" value="" Location="14,254" Size="240,150" text="" /> <Button name="button2" value="确定" Location="12,24" Size="75,23" text="确定" /> <Label name="label2" value="label1" Location="12,53" Size="41,12" text="我是lable" /> </Controls> </XmlDataForm>
一些简单的控件 和他属性 现在 怎么能通过读写xml生成控件呢
``XmlDocument document = new XmlDocument(); document.Load(@"D:\Form1.xml");//xml路径 XmlNodeList list_body = document.SelectNodes("XmlDataForm"); CreateFormfromXML.XmlForm xmlform = new CreateFormfromXML.XmlForm(list_body[0]); Control[] rst = xmlform.Controls; for (int i = 0; i < rst.Length; i++) { this.Controls.Add(rst[i]); } this.Text = xmlform.Text;**重点内容**
**调用 了 xmlform这个方法
public XmlForm(XmlNode node) { weight = node.Attributes["ClientSize"].Value.Split(',')[0].ToString(); height = node.Attributes["ClientSize"].Value.Split(',')[1].ToString(); text = node.Attributes["Text"].Value.ToString(); // backColor = node.Attributes["backcolor"].Value.ToString(); // XmlNodeList list = node.ChildNodes; XmlNodeList list = node.SelectSingleNode("Controls").ChildNodes; controls = new Control[list.Count]; for (int i = 0; i < list.Count; i++) { XmlNode _node = list[i]; string className = _node.Name; Assembly assembly = Assembly.LoadFrom(@"System.Windows.Forms.dll"); if(className!=null){ Type type = assembly.GetType(@"System.Windows.Forms."+className); Object obj = Activator.CreateInstance(type); Control control = (Control)obj; control.Left = int.Parse(_node.Attributes["Location"].Value.Split(',')[0].ToString()); control.Top = int.Parse(_node.Attributes["Location"].Value.Split(',')[1].ToString()); control.Width = int.Parse(_node.Attributes["Size"].Value.Split(',')[0].ToString()); control.Height = int.Parse(_node.Attributes["Size"].Value.Split(',')[1].ToString()); control.Name = _node.Attributes["name"].Value.ToString(); control.Text = _node.Attributes["text"].Value.ToString(); if (control is ComboBox) { ComboBox com = (ComboBox)control; for (int j = 0; j < 3;j++ ) { com.Items.Add(_node.SelectSingleNode("init").InnerText.Split(',')[j]); } } controls[i] = control; } } }
人太懒 没打注释 反正很容易看明白!重点内容*重点内容*
相关文章推荐
- [深入学习C#]LINQ查询表达式详解(1)——基本语法、使用扩展方法和Lambda表达式简化LINQ查询
- C#判断字符串是否只有数字和字母组成(Regex.IsMatch)
- C# List和String互相转换
- C# 引用类型与值类型的区别
- C# 数据封装和解析
- C#使用Region对图形区域构造和填充的方法
- C# 添加敏感词
- C# 获取Get请求返回
- 《C#程序设计》第五次作业:开源项目“网页正文提取”的案例分析
- C#调用存储过程
- c# 特性/属性(Attribute) 以及使用反射查看自定义特性
- 命名实参和可选实参(C# 编程指南)
- c# 判断当前时间是否在 工作日时间段内
- C#反射发出System.Reflection.Emit学习
- C#中GraphicsPath的Flatten方法用法实例
- C#实现图形路径变换的方法
- C#实现图形位置组合转换的方法
- C#中Shear的用法实例
- 用C#写的读写CSV文件
- C#形状原点变换的方法