欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

WinForm实现为ComboBox绑定数据源并提供下拉提示功能

程序员文章站 2024-02-19 08:13:58
本文实例展示了winform实现为combobox绑定数据源并提供下拉提示功能,这是一个非常有实用价值的功能,具体实现方法如下: 主要功能代码如下: /// &...

本文实例展示了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);
  }
}

代码运行效果如下:

WinForm实现为ComboBox绑定数据源并提供下拉提示功能