Вопрос

Я создал 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";
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top