ListBox和ComboBox绑定数据简单例子
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数据绑定问题
ListBox和ComboBox绑定数据简单例子相关推荐
- combobox绑定数据
今天开发过程中遇到Combobox绑定数据的需求,研究了下绑定DataTable,现在Po上来,有时间研究下绑定其他类型的数据,到时候再来更新. 废话不多说,上代码: //清空一下绑定 m_Combo ...
- 解决winform combobox绑定数据时触发changed事件
我们在使用comboBox组件时如果同时设置了SelectedIndexChanged事件,在绑定combobox事件时会先触发一下changed事件,怎么能在绑定时不触发,再绑定之后的用户选择触发呢 ...
- WinForm中ComboBox绑定数据的用法
DataTable table= BLLPackageCategory.SelectType(); comboBox1.ValueMember = "Id"; ...
- 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox
[索引页] [源码下载] 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 详解ListBox 作者:webabcd 介绍 Silverlight 2.0 详解DataG ...
- Combobox 控件绑定数据
ComboBox 类:表示带有下拉列表的选择控件,通过单击控件上的箭头可显示或隐藏下拉列表. 绑定集合对象 // .xaml using System; using System.Collection ...
- wpf ComboBox使用Dictionary来绑定数据
ComboBox使用Dictionary来绑定数据的话需要在xaml上写上两个属性: SelectedValuePath="Key" DisplayMemberPath=" ...
- Winform 使用ComboBox.DataSource绑定数据会触发SelectedIndexChanged事件解决
1.绑定数据后再添加SelectedIndexChanged事件 2.SelectedIndexChanged事件中判断是否是选择项改变触发事件 if(ComboxBox1.ContainsFocus ...
- Coolite一个简单例子-GridPanel列表增删改预览
本篇教程:Coolite Toolkit中文站首发. 我从http://www.cnblogs.com/magical/archive/2009/10/27/1590701.html转载. 这个例子只 ...
- D3.js系列——初步使用、选择元素与绑定数据
D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱动的文档.听名字有点抽象,说简单一点,其实就是一个 JavaScript 的函数库,使用它主要是用来做数据可 ...
最新文章
- Eclipse如何从SVN更新和上传修改部分项目
- android项目允许命令,android 项目 gradle 命令
- python exe文件运行依赖环境_python将py代码文件转换为EXE脱离环境运行
- Python 常用函数 configparser模块
- leetcode127. 单词接龙(bfs)
- 如何清除tomcat缓存
- React - S1
- Leetcode(11)-盛最多水的容器
- 通过Socket configuration controls 获取网络设备地址
- html svg 编辑器
- 苏宁大数据怎么运营_苏宁智慧门店是什么?智慧门店是如何运作的?
- 微信能转发邮件吗?邮件怎么用微信发送?微信邮件怎么发?
- [MATLAB]代数/常微分求解(solve/dsolve)
- 音乐计算机研修心得,音乐学习心得体会五篇
- 边境的悍匪—机器学习实战:第十八章 强化学习
- 使用Cobbler批量部署Linux和Windows
- 华硕vm510l拆电池图解_华硕vm510l的拆机教程详解 参数报价
- 是否能构成三角形java
- Camera Metadata原理
- 67 Pod生命周期