本文實例展示了WinForm實現為ComboBox綁定數據源并提供下拉提示功能,這是一個非常有實用價值的功能,具體實現方法如下:
主要功能代碼如下:
/// <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 static void Bind<T>(this 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 static 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);}
使用示例:
List<CommonEntity> Sources = new List<CommonEntity>();private void WinComboBoxToolV2Test_Load(object sender, EventArgs e){ CreateBindSource(5); comboBox1.Bind(Sources, "Name", "Age", "--請選擇--");}private void CreateBindSource(int count){ for (int i = 0; i < count; i++) { CommonEntity _entity = new CommonEntity(); _entity.Age = i; _entity.Name = string.Format("Yan{0}", i); Sources.Add(_entity); }}
代碼運行效果如下:
新聞熱點
疑難解答