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.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绑定数据简单例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据导入导出 、 表记录基本操作 、 查
- 下一篇: PHP中cookie和session