C # добавление строк в сетку данных - PullRequest
0 голосов
/ 23 ноября 2011

У меня проблемы с заполнением таблицы данных элементами из массива строк.Вот код, который я использовал для вызова функции:

ThreadPool.QueueUserWorkItem((o) => 
                ReBuildObjectExplorer();

И сама функция:

        try
        {
            List<ExplorerItem> list = new List<ExplorerItem>();
            var item = new ExplorerItem();

            for (int i = 0; i < lbl.Length; i++) // lbl = string array with items
            {
                item.title = lbl[i].Name;
                list.Add(item);
            }

            BeginInvoke((MethodInvoker)delegate
            {
                explorerList = list;
                dgvObjectExplorer.RowCount = explorerList.Count;
                dgvObjectExplorer.Invalidate();
            }); 
        }
        catch (Exception e) { MessageBox.Show(e.ToString(); }

Проблема в том, что в массиве 76 элементов.Когда я использую этот код, он ВСЕГДА добавляет 75-й элемент 76 раз и ничего больше.Почему это происходит?Кажется, я не могу понять, что не так с моим кодом.

1 Ответ

1 голос
/ 23 ноября 2011

Я думаю, что вы хотите:

    try
    {
        List<ExplorerItem> list = new List<ExplorerItem>();

        for (int i = 0; i < lbl.Length; i++) // lbl = string array with items
        {
            var item = new ExplorerItem();
            item.title = lbl[i].Name;
            list.Add(item);
        }

        BeginInvoke((MethodInvoker)delegate
        {
            explorerList = list;
            dgvObjectExplorer.RowCount = explorerList.Count;
            dgvObjectExplorer.Invalidate();
        }); 
    }
    catch (Exception e) { MessageBox.Show(e.ToString(); }

То есть перемещать создание нового ExplorerItem внутри цикла, а не за его пределы.Таким образом, новый элемент создается на каждой итерации цикла.Если вы не создаете новый элемент в каждой итерации, то вы добавляете один и тот же элемент снова и снова, меняя его заголовок в каждой итерации.

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