Почему все разные коллекции в Winforms? - PullRequest
2 голосов
/ 03 марта 2009

Если я хотел бы отобразить 10 000 элементов в выпадающем списке (просто пример), загрузка списка с диска быстрая, но когда я устанавливаю источник данных, он медленный. Есть ли способ просто указать на данные, а не преобразовать их в коллекцию выпадающих списков.

List<string> myitems = getItems();

ComboBox box = new ComboBox();
box.DataSource = myitems;        // <--- Takes a long time

Исходя из Delphi, где все является StringList, я нахожу все разные коллекции немного странными, почему они просто не используют List<T> или какой-то другой класс, не связанный так тесно с элементом управления?

В Delphi:

textbox.lines = myitems
listbox.items = myitems
combobox.items = myitems

все просто устанавливает указатель на одни и те же данные, т.е. мгновенные.

1 Ответ

1 голос
/ 03 марта 2009

Базовый комбинированный элемент управления Windows (как и некоторые другие) может работать в «виртуальном» режиме, где он заполняется по требованию, без необходимости предварительной загрузки большого количества элементов. Это экономит память и время, а также позволяет создавать очень длинные списки содержимого.

К сожалению, родные элементы управления WinForm, похоже, не поддерживают этот режим работы, но, возможно, доступна другая оболочка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...