using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Windows.Forms; namespace KK.Control.Helper { public class CmbHelper { //定义一个用于保存静态变量的实例 private static CmbHelper instance = null; //定义一个保证线程同步的标识 private static readonly object locker = new object(); //构造函数为私有,使外界不能创建该类的实例 private CmbHelper() { } public static CmbHelper Instance { get { if (instance == null) { lock (locker) { if (instance == null) instance = new CmbHelper(); } } return instance; } } public TModel GetTModel<TModel>(ComboBox cmb) { //ZB.QueueSys.Model.QS_QUEUE queue = this.cmbQueue.SelectedItem as ZB.QueueSys.Model.QS_QUEUE; //StudentInfos stu = CmbHelper.Instance.GetTModel<StudentInfos>(this.cmbTest); return (TModel)cmb.SelectedItem; } public void BindingCmb<TModel>(List<TModel> list, ComboBox cmb, string displayMember) { if (list == null || list.Count <= 0) { cmb.DataSource = null; return; } cmb.DataSource = list; cmb.DisplayMember = displayMember; cmb.SelectedIndex = 0; //List<V_APPLYDEPART> departs = AppDepartBLL.GetApplyDeparts(); //if (departs != null && departs.Count > 0) departs.Insert(0, new V_APPLYDEPART { APPLYDEPART = PubVariable.All, DEPARTID = "-1" }); //PubHelper.Instance.BindingCmb(departs, this.cmbDepart, "APPLYDEPART"); } public void BindingCmbAndInsetAll<TModel>(List<TModel> list, ComboBox cmb, string displayMember, string all = "全部") { if (list == null || list.Count <= 0) { cmb.DataSource = null; return; } cmb.Items.Clear(); cmb.Items.Add(all); foreach (TModel item in list) { cmb.Items.Add(item); } //cmb.DataSource = list; cmb.DisplayMember = displayMember; cmb.SelectedIndex = 0; //PubHelper.Instance.BindingCmb(departs, this.cmbDepart, "APPLYDEPART"); } /// <summary> /// 为ComboBox绑定数据源并提供下拉提示 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="combox">ComboBox</param> /// <param name="list">数据源</param> /// <param name="displayMember">显示字段</param> /// <param name="valueMember">隐式字段</param> /// <param name="displayText">下拉提示文字</param> public void Bind<T>(ComboBox combox, IList<T> list, string displayMember, string valueMember, string displayText = "全部") { AddItem(list, displayMember, displayText); combox.DataSource = list; combox.DisplayMember = displayMember; if (!string.IsNullOrEmpty(valueMember)) combox.ValueMember = valueMember; } private void AddItem<T>(IList<T> list, string displayMember, string displayText) { Object _obj = Activator.CreateInstance<T>(); Type _type = _obj.GetType(); if (!string.IsNullOrEmpty(displayMember)) { PropertyInfo _displayProperty = _type.GetProperty(displayMember); _displayProperty.SetValue(_obj, displayText, null); } list.Insert(0, (T)_obj); } } }
原文:https://www.cnblogs.com/YYkun/p/14814073.html