C # - свойство ListBox DataSource и привязка ArrayList - PullRequest
3 голосов
/ 03 мая 2009

Я создал ArrayList, который содержит объекты KeyValuePair . Существуют списки, которые я хотел бы связать с этим списком, чтобы мне не приходилось заполнять их итерацией, одновременно копируя все данные, которые у меня есть в вышеупомянутом ArrayList.

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

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

1 Ответ

9 голосов
/ 03 мая 2009
В списках

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

listBox.DisplayMember = "Key";
...