上篇博客中讲到了利用编写第三方控件的方法,实现给窗体控件的Text属性赋值,比如说:TextBox,Combox等。有赋值,当然也有取值操作。从窗体的控件中取值,然后存入变量或者实体属性当中,传入到数据访问层进行添加,更新等操作也是我们经常使用的。如何实现一键取值呢?
使用的方法在上篇博客中已经做了详细说明,这里就不再累述了。
代码写在这里:
该方法的作用是,遍历传入窗体中的控件,并且获取其值赋给实体类的相应属性。
/// <summary> /// 从窗体控件取值,填充到学生实体类中 /// </summary> /// <param name="enStudent">学生实体</param> public static void FillStuEntityByForm(StuEntity enStudent, Form thisfrm) { //遍历窗体上的控件 foreach (Control ctrl in thisfrm.Controls) { //控件是否继承了接口 if (ctrl is Interface1) { //是否属于文本框 if (ctrl is TextBoxEx) { //给实体属性赋值 SetStuValue(enStudent, ((TextBoxEx)ctrl).DataField, ctrl.Text); }//如果属于下拉框 else if (ctrl is ComboxEx) { SetStuValue(enStudent, ((ComboxEx)ctrl).DataField, ((ComboxEx)ctrl).Text); } } } }
利用反射给实体每个属性赋值:
/// <summary> /// 给实体相应的属性赋值 /// </summary> /// <param name="enStudent">学生实体类</param> /// <param name="DataFiled">匹配字符串</param> /// <param name="Value">窗体控件的值</param> public static void SetStuValue(StuEntity enStudent, string DataFiled, string Value) { PropertyInfo field = enStudent.GetType().GetProperty(DataFiled); field.SetValue(enStudent, Value, null); }
将返回实体的属性取出,拼成一个字符串。
/// <summary> /// 将实体的属性组合成字符串返回 /// </summary> /// <param name="enStudent"></param> /// <returns></returns> public static string GetStr(StuEntity enStudent) { PropertyInfo[] fields = enStudent.GetType().GetProperties(); StringBuilder sb = new StringBuilder(); foreach (PropertyInfo pi in fields) { sb.Append(pi.Name).Append(":").Append(pi.GetValue(enStudent, null)).Append("\r\n"); } return sb.ToString(); }
客户端调用代码:
private void btnGetValue_Click(object sender, EventArgs e) { StuEntity enStudent = new StuEntity(); //调用填充实体属性的函数 FrmHelper.FillStuEntityByForm(enStudent, this); //将实体的属性显示出来 string str = FrmHelper.GetStr(enStudent); MessageBox.Show(str); }
显示效果:
实现过程就是这样了,有什么不当的地方欢迎指出!
oノo════════════════════════════╲
│ヽ.编程学习中。欢迎交流。 │
│ http://blog.csdn.net/u010028869 .ヽ│
╲═════════════════════════════ヾ
原文地址:http://blog.csdn.net/u010028869/article/details/39435247