У меня есть ListView, содержащий 17000+ элементов. При использовании ListView.SelectedItems для получения данных, скажем, от 100 элементов, он выполняется почти мгновенно. Но если вместо этого я использую ListView.CheckedItems для получения данных из одних и тех же элементов, это займет более одной минуты. Я использую один и тот же код в обоих случаях. Это нормально?
ListView.SelectedListViewItemCollection selectedItems = listViewProducts.SelectedItems;
for (int i = 0; i < selectedItems.Count; i++)
{
string sku = listViewProducts.Items[selectedItems[i].Index].SubItems[1].Text;
string productName = listViewProducts.Items[selectedItems[i].Index].SubItems[0].Text;
CurrentProductGroup.Add(sku + "|" + productName);
}
Хорошо, это работает, получение данных из 100 отмеченных элементов занимает около 2 секунд:
int numberOfItems = listViewProducts.Items.Count;
for (int i = 0; i < numberOfItems; i++)
{
if (listViewProducts.Items[i].Checked)
{
string sku = listViewProducts.Items[i].SubItems[1].Text;
string productName = listViewProducts.Items[i].Text;
CurrentProductGroup.Add(sku + "|" + productName);
}
}