什麼是在C#.NET 2.0 Winforms中加載ListBox
的正確方法?什麼是加載列表框的正確方法?
我想我可以將它綁定到DataTable
。沒有這樣的運氣。
我想我可以將它與Dictionary
綁定。沒有運氣。
我必須編寫一個名爲KeyValuePair
的類,然後使用List<KeyValuePair>
只是爲了能夠用對象加載這個東西?也許我錯過了一些明顯的東西。我想讓我的顯示文字和數值成爲不同的值。
什麼是在C#.NET 2.0 Winforms中加載ListBox
的正確方法?什麼是加載列表框的正確方法?
我想我可以將它綁定到DataTable
。沒有這樣的運氣。
我想我可以將它與Dictionary
綁定。沒有運氣。
我必須編寫一個名爲KeyValuePair
的類,然後使用List<KeyValuePair>
只是爲了能夠用對象加載這個東西?也許我錯過了一些明顯的東西。我想讓我的顯示文字和數值成爲不同的值。
簡單的代碼示例。假設你有一個Person
類有3個屬性。 FirstName
,LastName
和Age
。假設你想將你的列表框綁定到一個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";
訣竅是DisplayMember
和ValueMember
。
讓我們假設你的數據類型被稱爲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());
讓我知道如果你需要更多的幫助 - 這將有助於瞭解您試圖在列表框中顯示的數據類型。
您可以將數據源設置爲您喜歡的實現IList或IListSource的任何數據源。
您還需要將DisplayMember和ValueMember屬性設置爲您要顯示的字段並分別具有相關的值。
你可以直接bind a DataTable ...
listbox.ValueMember = "your_id_field";
listbox.DisplayMember = "your_display_field";
listbox.DataSource = dataTable;
使用paramater用於明智吸性能的數據源 - 上組合框至少,
我現在很大程度上適應了對象上覆蓋的ToString()就像上面描述的另一位評論者那樣使用Items.AddRange()方法添加對象。
要綁定到一個字典,你必須把它包裝在一個新的BindingSource對象中。
MyListBox.DataSource = New BindingSource(Dict, Nothing)
MyListBox.DisplayMember = "Value"
MyListBox.ValueMember = "Key"
我想這似乎很奇怪。如果您正在使用一個小型項目,而您正在使用DataSets/DataTables並且沒有業務對象。我想我可能只是寫一個KeyValuePair類。 公共類KeyValuePair { 公共對象鍵{獲得;設置;} 公共對象值{獲取;集;}} 時 – BuddyJoe 2008-11-19 20:52:01
沒有,我想念他們加入了內置KVP的框架......哎呀,我覺得啞。 – BuddyJoe 2008-11-19 20:56:05