Mariusz Schimke
Mariusz Schimke

Reputation: 3285

C# - ListBox DataSource property and binding an ArrayList

I created an ArrayList which contains KeyValuePair<string, string> objects. There are ListBoxes which I would like to bind to that list so that I do not have to fill them by iteration, copying at the same time all the data I have in the above mentioned ArrayList.

I am a Delphi programmer and in Delphi I would use the ListView control, set its OwnerData property to true and then use the OnData event to make a given item (with a specified index) display any piece of data from an array item having the same index. The OnData method gives me the currently displayed item as a parameter so I have access to e.g. its Index, Caption and SubItems properties. Basing on that index I can make the item display some data from an array item having the same index. If that array is modified, it is enough to refresh the ListView and/or set its Count property if the length of the array changed.

How to achieve the same goal in C# using the ListBox control? I set the listBox.DataSource property to myArrayList containing KeyValuePairs. Now I would like the listBox to display the keys of the KeyValuePairs objects.

Upvotes: 3

Views: 16111

Answers (1)

Tim Robinson
Tim Robinson

Reputation: 54734

.NET list boxes have this functionality built in. You've already set the DataSource property, so to display just the keys in the list, set:

listBox.DisplayMember = "Key";

Upvotes: 9

Related Questions