程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#編寫第三方控件,實現窗體控件的一鍵取值

C#編寫第三方控件,實現窗體控件的一鍵取值

編輯:C#入門知識

C#編寫第三方控件,實現窗體控件的一鍵取值


上篇博客中講到了利用編寫第三方控件的方法,實現給窗體控件的Text屬性賦值,比如說:TextBox,Combox等。有賦值,當然也有取值操作。從窗體的控件中取值,然後存入變量或者實體屬性當中,傳入到數據訪問層進行添加,更新等操作也是我們經常使用的。如何實現一鍵取值呢?

使用的方法在上篇博客中已經做了詳細說明,這裡就不再累述了。

代碼寫在這裡:

該方法的作用是,遍歷傳入窗體中的控件,並且獲取其值賦給實體類的相應屬性。

        /// 
        /// 從窗體控件取值,填充到學生實體類中
        /// 
        /// 學生實體
        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);
                    }
                }
            }
        }


利用反射給實體每個屬性賦值:

        /// 
        /// 給實體相應的屬性賦值
        /// 
        /// 學生實體類
        /// 匹配字符串
        /// 窗體控件的值
        public static void SetStuValue(StuEntity enStudent, string DataFiled, string Value)
        {
            PropertyInfo field = enStudent.GetType().GetProperty(DataFiled);
            field.SetValue(enStudent, Value, null);
        }


將返回實體的屬性取出,拼成一個字符串。

        /// 
        /// 將實體的屬性組合成字符串返回
        /// 
        /// 
        /// 
        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);
        }


顯示效果:
椐鷌椐鷌h?覯4覯4覯4覯4覯4覯4覰楗啤編程學習中。歡迎交流。 │

│ http://blog.csdn.net/u010028869 .ヽ│

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved