2009-05-03 4 views
3

Я создал ArrayList, который содержит строку KeyValuePair <, строку > объектов. Есть ListBoxes, которые я хотел бы привязать к этому списку, так что мне не нужно заполнять их путем итерации, одновременно копируя все данные, которые у меня есть в вышеупомянутом ArrayList.C# - свойство DataSource ListBox и привязка ArrayList

Я программист Delphi, и в Delphi я бы использовал элемент управления ListView, установил его свойство OwnerData равным true, а затем использовал событие OnData, чтобы сделать данный элемент (с указанным индексом) отображать любую часть данных из массива элемент с тем же индексом. Метод OnData дает мне текущий отображаемый элемент в качестве параметра, поэтому я имею доступ к, например, его свойства Index, Caption и SubItems. Основываясь на этом индексе, я могу заставить элемент отображать некоторые данные из элемента массива, имеющего тот же индекс. Если этот массив изменен, достаточно обновить ListView и/или установить его свойство Count, если длина массива изменилась.

Как достичь той же цели на C#, используя элемент управления ListBox? Я установил свойство listBox.DataSource в myArrayList, содержащий KeyValuePairs. Теперь я хотел бы, чтобы listBox отображал ключи объектов KeyValuePairs.

ответ

9

список .NET коробка имеет такую ​​функциональность встроенную в Вы уже установили DataSource свойство, так, чтобы отобразить только ключи в списке, установите:.

listBox.DisplayMember = "Key"; 
+0

Отлично! Я бы добавил "listBox.ValueMember =" Value ";" Я ненавижу списки без ценностей! ;-) – Cerebrus

+0

Вы тоже можете это сделать - это зависит от того, хотите ли вы, чтобы listBox.SelectedValue предоставил вам KeyValuePair или просто строку. –

Смежные вопросы