1. 将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容

//自定义了Person类(有Name,Age,Heigth等属性)

List<Person> persons=new List<Person>();
persons.Add(new Person("WuMiao",18,175));
persons.Add(new Person("YeXinYv",20,170));
persons.Add(new Person("WuDong",18,175));//ListBox控件实现
lb_PersonsList.DataSource=persons;        //指定数据源
lb_PersonList.DisplayMember="Name";    //界面显示的是人的名字//ComboBox控件实现  (与ListBox的实现类似)
cmb_PersonList.DataSource=persons;
cmb_PersonList.DisplayMember="Name";

2. 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);
}

使用方法

 具体的使用操作代码

3. 双向绑定

  ListBox控件的datasourse属性能绑定多种数据格式,如List表,Table表。如果绑定List表当数据源发生改变时,ListBox控件显示并不会跟着改变。

  使用BindingList<T>类能实现数据源改变后ListBox的实时更新。只需要把数据源添加到BindingList对象中,并将ListBox的datasource绑定为BindingList 对象。当对BindingList的数据进行发生增、删、或者指向新对象时ListBox界面将跟着变动。需要注意的是对数据源属性的修改并不会引起界面的更新。

  DataTable也能实现该功能。实现这一功能的原理是一个叫做双向绑定的功能。

4. ListBox数据绑定并显示的问题

以前以为可以根ASP.NET中的用法差不多,即

ListBox listBox;
listBox.DataSource = ds;
listBox.DataTextField = "要显示的字段名";
listBox.DataValueField = "id";
listBox.DataBind();

然后利用listBox.SelectedItem即可访问被选中的项的值,当然在WinForm中除了DataSource的属性还有,其他都没有了,WinForm就换成如下方式:

listBox.DataSource = ds.Tables[0];
listBox.DisplayMember = "carsnumber";
listBox.ValueMember = "id";

这 样便可在ListBox正确显示出来,并且利用listBox.SelectedValue可以得到选定项的对应的id, 但是当我用listBox.SelectedItem打算得到相应的carsnumber值时,确显示System.Data.DataRowView, 利用listBox.Item[]访问得到的结果是一样的。最后在网上搜搜看能不能找到答案,又在CSDN上搜了一下以前的帖子,最后找到了答案,如果要 循环访问绑定了的Text值和Value 值,可用如下方式:

for( int i = 0; i < listBox.Items.Count; i++ )
{
DataRowView drv = listBox.Items[i] as DataRowView;
if( drv != null )
{
MessageBox.Show( "Text:" + drv[listBox.DisplayMember].ToString() );
MessageBox.Show( "Value:" + drv[listBox.ValueMember].ToString() );
}
}

参考文章

1. winform中的ListBox和ComboBox绑定数据用法实例

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

3. WinForm中ListBox数据绑定问题

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5705437.html,如需转载请自行联系原作者

ListBox和ComboBox绑定数据简单例子相关推荐

  1. combobox绑定数据

    今天开发过程中遇到Combobox绑定数据的需求,研究了下绑定DataTable,现在Po上来,有时间研究下绑定其他类型的数据,到时候再来更新. 废话不多说,上代码: //清空一下绑定 m_Combo ...

  2. 解决winform combobox绑定数据时触发changed事件

    我们在使用comboBox组件时如果同时设置了SelectedIndexChanged事件,在绑定combobox事件时会先触发一下changed事件,怎么能在绑定时不触发,再绑定之后的用户选择触发呢 ...

  3. WinForm中ComboBox绑定数据的用法

    DataTable table= BLLPackageCategory.SelectType();            comboBox1.ValueMember = "Id"; ...

  4. 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox

    [索引页] [源码下载] 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 详解ListBox 作者:webabcd 介绍 Silverlight 2.0 详解DataG ...

  5. Combobox 控件绑定数据

    ComboBox 类:表示带有下拉列表的选择控件,通过单击控件上的箭头可显示或隐藏下拉列表. 绑定集合对象 // .xaml using System; using System.Collection ...

  6. wpf ComboBox使用Dictionary来绑定数据

    ComboBox使用Dictionary来绑定数据的话需要在xaml上写上两个属性: SelectedValuePath="Key" DisplayMemberPath=" ...

  7. Winform 使用ComboBox.DataSource绑定数据会触发SelectedIndexChanged事件解决

    1.绑定数据后再添加SelectedIndexChanged事件 2.SelectedIndexChanged事件中判断是否是选择项改变触发事件 if(ComboxBox1.ContainsFocus ...

  8. Coolite一个简单例子-GridPanel列表增删改预览

    本篇教程:Coolite Toolkit中文站首发. 我从http://www.cnblogs.com/magical/archive/2009/10/27/1590701.html转载. 这个例子只 ...

  9. D3.js系列——初步使用、选择元素与绑定数据

    D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱动的文档.听名字有点抽象,说简单一点,其实就是一个 JavaScript 的函数库,使用它主要是用来做数据可 ...

最新文章

  1. Eclipse如何从SVN更新和上传修改部分项目
  2. android项目允许命令,android 项目 gradle 命令
  3. python exe文件运行依赖环境_python将py代码文件转换为EXE脱离环境运行
  4. Python 常用函数 configparser模块
  5. leetcode127. 单词接龙(bfs)
  6. 如何清除tomcat缓存
  7. React - S1
  8. Leetcode(11)-盛最多水的容器
  9. 通过Socket configuration controls 获取网络设备地址
  10. html svg 编辑器
  11. 苏宁大数据怎么运营_苏宁智慧门店是什么?智慧门店是如何运作的?
  12. 微信能转发邮件吗?邮件怎么用微信发送?微信邮件怎么发?
  13. [MATLAB]代数/常微分求解(solve/dsolve)
  14. 音乐计算机研修心得,音乐学习心得体会五篇
  15. 边境的悍匪—机器学习实战:第十八章 强化学习
  16. 使用Cobbler批量部署Linux和Windows
  17. 华硕vm510l拆电池图解_华硕vm510l的拆机教程详解 参数报价
  18. 是否能构成三角形java
  19. Camera Metadata原理
  20. 67 Pod生命周期

热门文章

  1. WMI介绍和应用查询硬件信息(硬盘信息、主板信息、BIOS信息、显示器信息、网络适配器、CPU信息)
  2. 十一、伪指令、数据类型、操作符
  3. MFC使用http post请求上传文件
  4. 关于代码效率提升的方法心路历程(购物车)
  5. 设计模式-结构型模式-装饰模式
  6. RPC-非阻塞通信下的同步API实现原理,以Dubbo为例
  7. 关于discuz 不能全文搜索的问题
  8. UVALive 6508 Permutation Graphs
  9. 【大数据】Linux下Storm(0.9版本以上)的环境配置和小Demo
  10. dfs序 + RMQ = LCA