2008-11-19 61 views
22

什麼是在C#.NET 2.0 Winforms中加載ListBox的正確方法?什麼是加載列表框的正確方法?

我想我可以將它綁定到DataTable。沒有這樣的運氣。
我想我可以將它與Dictionary綁定。沒有運氣。

我必須編寫一個名爲KeyValuePair的類,然後使用List<KeyValuePair>只是爲了能夠用對象加載這個東西?也許我錯過了一些明顯的東西。我想讓我的顯示文字和數值成爲不同的值。

回答

59

簡單的代碼示例。假設你有一個Person類有3個屬性。 FirstNameLastNameAge。假設你想將你的列表框綁定到一個Person對象的集合。您希望顯示器顯示名字,但值是年齡。這裏是你會怎麼做:

List<Person> people = new List<Person>(); 
people.Add(new Person { Age = 25, FirstName = "Alex", LastName = "Johnson" }); 
people.Add(new Person { Age = 23, FirstName = "Jack", LastName = "Jones" }); 
people.Add(new Person { Age = 35, FirstName = "Mike", LastName = "Williams" }); 
people.Add(new Person { Age = 25, FirstName = "Gill", LastName = "JAckson" }); 
this.listBox1.DataSource = people; 
this.listBox1.DisplayMember = "FirstName"; 
this.listBox1.ValueMember = "Age"; 

訣竅是DisplayMemberValueMember

5

讓我們假設你的數據類型被稱爲MyDataType。在該數據類型上實現ToString()以確定顯示文本。例如:

class MyDataType 
{ 
    public string ToString() 
    { 
    //return the text you want to display 
    } 
} 

然後你可以採取列表,包括你的數據類型,並通過的AddRange它塞進列表框()如下:

ListBox l; 
List<MyDataType> myItems = new List<MyDataType>(); // populate this however you like 
l.AddRange(myItems.ToArray()); 

讓我知道如果你需要更多的幫助 - 這將有助於瞭解您試圖在列表框中顯示的數據類型。

+0

我想這似乎很奇怪。如果您正在使用一個小型項目,而您正在使用DataSets/DataTables並且沒有業務對象。我想我可能只是寫一個KeyValuePair類。 公共類KeyValuePair { 公共對象鍵{獲得;設置;} 公共對象值{獲取;集;}} 時 – BuddyJoe 2008-11-19 20:52:01

+0

沒有,我想念他們加入了內置KVP的框架......哎呀,我覺得啞。 – BuddyJoe 2008-11-19 20:56:05

3

您可以將數據源設置爲您喜歡的實現IList或IListSource的任何數據源。

您還需要將DisplayMember和ValueMember屬性設置爲您要顯示的字段並分別具有相關的值。

5

你可以直接bind a DataTable ...

listbox.ValueMember = "your_id_field"; 
listbox.DisplayMember = "your_display_field"; 
listbox.DataSource = dataTable; 
1

使用paramater用於明智吸性能的數據源 - 上組合框至少,

我現在很大程度上適應了對象上覆蓋的ToString()就像上面描述的另一位評論者那樣使用Items.AddRange()方法添加對象。

1

要綁定到一個字典,你必須把它包裝在一個新的BindingSource對象中。

MyListBox.DataSource = New BindingSource(Dict, Nothing) 
MyListBox.DisplayMember = "Value" 
MyListBox.ValueMember = "Key" 
相關問題