上篇博客中講到了利用編寫第三方控件的方法,實現給窗體控件的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); }
顯示效果:
編程學習中。歡迎交流。 │
│ http://blog.csdn.net/u010028869 .ヽ│
╲═════════════════════════════ヾ