title: C# - ListBox DataSource property and binding an ArrayList
body: <p>I created an ArrayList which contains KeyValuePair&lt;string, string&gt; 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.</p>
  
  <p>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.</p>
  
  <p>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.</p>