C # - свойство ListBox DataSource и привязка ArrayList
-
03-07-2019 - |
Вопрос
Я создал ArrayList, который содержит KeyValuePair < string, string > объекты. Существуют списки, которые я хотел бы связать с этим списком, чтобы мне не приходилось заполнять их итерацией, одновременно копируя все данные, которые у меня есть в вышеупомянутом ArrayList.
Я программист на Delphi, и в Delphi я бы использовал элемент управления ListView, установил для его свойства OwnerData значение true, а затем использовал событие OnData, чтобы заставить данный элемент (с указанным индексом) отображать любой фрагмент данных из элемента массива имея тот же индекс. Метод OnData дает мне отображаемый в данный момент элемент в качестве параметра, поэтому у меня есть доступ к, например, его свойства Index, Caption и SubItems. Основываясь на этом индексе, я могу заставить элемент отображать некоторые данные из элемента массива с таким же индексом. Если этот массив изменен, достаточно обновить ListView и / или установить его свойство Count, если длина массива изменилась.
Как достичь той же цели в C # с помощью элемента управления ListBox? Я установил для свойства listBox.DataSource значение myArrayList, содержащее KeyValuePairs. Теперь я хотел бы, чтобы listBox отображал ключи объектов KeyValuePairs.
Решение
В списках .NET встроены эти функции. Вы уже установили свойство DataSource
, поэтому для отображения только ключей в списке установите:
listBox.DisplayMember = "Key";