ListView.CheckedItems очень медленно - PullRequest
0 голосов
/ 20 июня 2020

У меня есть 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);
            }
        }

1 Ответ

1 голос
/ 20 июня 2020

Ваш код слишком сложен.

ListView.SelectedListViewItemCollection selectedItems = listViewProducts.SelectedItems;

foreach (ListViewItem item in selectedItems)
{
    string sku = item.SubItems[1].Text;
    string productName = item.SubItems[0].Text;

    CurrentProductGroup.Add(sku + "|" + productName);
}

Отказ от ответственности: непроверенный код, поскольку у меня нет вашего набора данных.

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