Как говорит Ганс в комментарии к исходному вопросу, они оба будут иметь ужасную производительность, превосходящую только неудовольствие, которое ваши пользователи наверняка испытают при безумстве, когда одновременно отображается так много строк данных. .
Но если это неизбежно в вашем приложении (и вы предоставляете очень хорошую функцию поиска), тогда вам настоятельно рекомендуется использовать опцию virtual mode , независимо от того, какой элемент управления вы используете. решите использовать. Это означает, что вы должны обеспечить свои собственные операции по управлению данными, а не полагаться на контроль, который сделает это за вас. Преимущество в том, что все намного быстрее. Как говорится в документации :
Виртуальный режим предназначен для использования с очень большими хранилищами данных. Если свойство VirtualMode
имеет значение true, вы создаете DataGridView
с заданным количеством строк и столбцов, а затем обрабатываете событие CellValueNeeded
, чтобы заполнить ячейки. Виртуальный режим требует реализации базового кэша данных для обработки заполнения, редактирования и удаления ячеек DataGridView на основе действий пользователя. Для получения дополнительной информации о реализации виртуального режима см. Как: реализовать виртуальный режим в элементе управления Windows Forms DataGridView .
Или, для ListView
управления :
Установка свойства VirtualMode
в значение true переводит ListView
в виртуальный режим. В виртуальном режиме обычная коллекция Items
не используется. Вместо этого ListViewItem
объекты создаются динамически, поскольку ListView требует их.
Виртуальный режим может быть полезен при многих обстоятельствах. Если объект ListView
должен быть заполнен из очень большой коллекции, уже находящейся в памяти, создание объекта ListViewItem
для каждой записи может быть расточительным. В виртуальном режиме создаются только необходимые элементы. В других случаях значения объектов ListViewItem
, возможно, придется часто пересчитывать, и выполнение этого для всей коллекции приведет к неприемлемой производительности. В виртуальном режиме рассчитываются только необходимые элементы.
Чтобы использовать виртуальный режим, вы должны обработать RetrieveVirtualItem
событие , которое вызывается каждый раз, когда ListView
требует элемент. Этот обработчик событий должен создать объект ListViewItem
, который принадлежит указанному индексу. Кроме того, для свойства VirtualListSize
должен быть установлен размер виртуального списка.
Обработка события SearchForVirtualItem
позволяет выполнять поиск в виртуальном режиме. Если это событие не обработано, методы FindItemWithText
и FindNearestItem
вернут значение null.
Вы можете обработать событие CacheVirtualItems
, чтобы поддерживать кэш объектов ListViewItem
. Если вычисления или поиск для создания ListViewItem
объекта являются дорогостоящими, поддержание кэша может повысить производительность.
Если для свойства View
установлено значение Tile, значение автоматически изменится на LargeIcon, если для VirtualMode
установлено значение true.
В виртуальном режиме коллекция Items
отключена. Попытка доступа к нему приводит к InvalidOperationException
. То же самое относится к коллекции CheckedItems
и коллекции SelectedItems
. Если вы хотите получить выбранные или отмеченные элементы, используйте коллекции SelectedIndices
и CheckedIndices
.