使用AutoControlMapper进行控件信息的自动映射和读取
AutoControlMapper 一个通过Contorl.Tag属性,将变量值与控件自动映射的工具类,使用起来也非常简单。
AutoControlMapper介绍
总述
在使用Winform开发的时候,你是否为将对象信息更新到Winform和从Winform中更新到对象而苦恼。
如下图,当一个对象有多个属性都需要更新到UI和从UI读取更新到对象时,总是需要重复的编写这部分代码。
而现在你不需要了,比如,我想将一个Person类的属性更新到界面,你所需要的就是为每一个需要展示的控件设置它的.Tag属性,比如tb_name.Tag="Name";
,而数据更新,就交给AutoControlMapper就可以了。
AutoControlMapper总共仅有3个函数
C#
//注册待更新到控件的变量
public void RegisterVariableObject(string objName, object obj);
//将对象内容更新到UI
public void UpdateToUI(Control ctl_in);
//从UI将内容更新到对象
public void UpdateFromUI( Control ctl_in);
使用示例
Form frm = new Control();
AutoControlMapper _acm = new AutoControlMapper();//实例化对象
_acm.RegisterVariableObject(null, obj);//注册变量
_acm.UpdateToUI(frm );//更新到控件
_acm.UpdateFromUI(frm );//更新到变量
具体步骤
我们假设有一个窗体控件
Form frm_main;
|-TextBox tb_name;
|-TextBox tb_age;
和一个待显示的变量
Person person;
|-string Name;
|-string Age;
- 修改控件的Tag属性
tb_name.Tag= "Name";//指向person.Name
tb_age.Tag= "Age";//指向person.Age
2.编辑代码
//更新变量到控件
AutoControlMapper _acm = new AutoControlMapper();//实例化对象
_acm.RegisterVariableObject(null, person);//注册 person
_acm.UpdateToUI(frm_main);//导入frm_main,他会将变量的值更新到frm_main下面的所有控件(不包括它自身)
//更新控件到变量
AutoControlMapper _acm = new AutoControlMapper();//实例化对象
_acm.RegisterVariableObject(null, person);//注册 person
_acm.UpdateFromUI(frm_main);//导入frm_main,他会更新frm_main下面的所有控件的值到已注册的变量(不包括它自身)
项目的Git地址
注意事项
1.这个版本暂时只支持同一个属性的单次注册,如果同一个属性,多次注册,则会报错。
2.当变量的值改变时,需要重新注册,控件的值不会自动更新;所以推荐每次更新控件的时候,都重新注册变量。