Demo流程(从动态生成控件开始)
1.From2_Load调用PanelReadXmlFile函数,开始动态生成控件。
2.RecordData类,用来存放xml文件中每个Item的各种数据(用get,set方法)。
3.根据RecordData存放的每个Item的控件类型生成控件,并绑定事件bindEventByValidateID
4.按下提交按钮后,对各个空间进行校验,foreach List<RecordData>中的每个RecordData,用到了HashTable类(键值-值)。bindEventByValidateID是动态检验(keyleave,keypress等事件)
5.List类似一个数据结构链表,能够foreach里面的每个节点。
关于从xml文件动态生成控件
XmlDocument myXml = new XmlDocument();
myXml.Load(filename);
XmlNodeList nodelist_item = myXml.SelectNodes("/TerritoryRemittance/Content/Item");
foreach(XmlNode node in nodelist_item){}
在xml中<Item ...></Item>, ...的内容就能被一次次陆续被取出来,类似于读取文件。
在代码中声明一个控件,赋予这个控件读取的内容。
一个TextBox中,只能输入XXXX.xx,即只有两位小数
声明一个正则表达式,对这个已经输入的小数进行匹配,如果符合的话,就不能再输入。这样有一个问题:输入完成后,想修改,也不能输入。用到了TextBox的SelectionStart属性,如果c.SelectionStart <= c.TextLength,即光标的位置在小数点前面,就可以进行输入。
这个功能的实现,觉得正则表达式很重要,对数据的结构判断,起到很大作用。