首页 > 代码库 > C#编写第三方控件,实现窗体控件的一键取值

C#编写第三方控件,实现窗体控件的一键取值

    上篇博客中讲到了利用编写第三方控件的方法,实现给窗体控件的Text属性赋值,比如说:TextBoxCombox等。有赋值,当然也有取值操作。从窗体的控件中取值,然后存入变量或者实体属性当中,传入到数据访问层进行添加,更新等操作也是我们经常使用的。如何实现一键取值呢?

使用的方法在上篇博客中已经做了详细说明,这里就不再累述了。

代码写在这里:

 

该方法的作用是,遍历传入窗体中的控件,并且获取其值赋给实体类的相应属性。

        /// <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                  .ヽ│

                                             ╲═══════════════ヾ

 

 

C#编写第三方控件,实现窗体控件的一键取值