datagridView.rows.count = 0 - PullRequest
       16

datagridView.rows.count = 0

0 голосов
/ 03 мая 2020

Я знаю, что этот вопрос может быть дубликатом других, но я схожу с ума, пытаясь понять, что происходит. Моя программа загружает список файлов Excel, и когда я выбрал один из них, я могу выбрать, какой лист я хочу отобразить с помощью таблицы данных. Теперь, имея data_ListDisplay в качестве DatagridView, заполненного 211 строками: с помощью приведенного ниже кода я хотел бы найти colum.index первой ячейки в наборе строк в datagridview, которая имеет данную «строку», которая соответствует критериям поиска.

Однако row.count ВСЕГДА = 0.

Вчера все работало нормально (OF C было ..). Затем мне нужно было сделать представление данных PUBLI C, чтобы использовать данные внутри для заполнения другого списка (данные уточняются при заполнении), который принадлежит другому классу. Код в порядке, без ошибок, и строка, которую я использовал для создания data_listDisplay pupli c, равна

public DataGridView DataGridCR { get { return data_ListDisplay; } }

Здесь и далее фрагмент кода (в исходном коде 2 конструкции foreach принадлежит к 2 закрытым методам, которые вычисляют переменные CrAnalysedCol и CrRealisedCol. Я помещаю их в один и тот же метод для быстрого копирования / вставки здесь)

        private void cbo_List_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Fill data_ListDisplay with the data set (datagridview) by changing the combobox value
            dt = tablecollection[this.cbo_List.SelectedItem.ToString()];
            data_ListDisplay.DataSource = dt;
            label3.Text = ($"Column Count{data_ListDisplay.Columns.Count}/Row Count {data_ListDisplay.Rows.Count}"); //Debug Purpose

            foreach (DataGridViewRow row in data_ListDisplay.Rows)
            {
                foreach (DataGridViewCell cell in row.Cells)
                {
                    if (cell.Value.ToString().Contains("CR to validate"))
                    {
                        CrRealisedCol = cell.ColumnIndex;
                    }
                }
            }
            foreach (DataGridViewRow row in data_ListDisplay.Rows)
            {
                foreach (DataGridViewCell cell in row.Cells)
                {
                    if (cell.Value.ToString().Contains("CR analysed"))
                    {
                        CrAnalysedCol = cell.ColumnIndex;
                    }
                }
            }

        }

где: cbo_List - это комбинированный список, который заполняется всеми листами в выбранная книга, а также CrAnalysedCol и CrRealisedCol также объявлены как publi c.

label3.Text всегда корректен с учетом количества столбцов и строк.

Может ли кто-нибудь помочь мне в этом ?

Заранее спасибо

РЕДАКТИРОВАТЬ 05/03/2020 Выглядит так, когда я пытаюсь получить доступ к DataGridView из другого класса использование

Form_VVTool formmain = new Form_VVTool();

dt становится равным нулю. Я предполагаю, что это происходит из-за InitializeComponent (), который вызывается каждый раз, когда выполняется вышеуказанный код. Что может быть способом сохранить все из Form_VVTool? Еще раз спасибо

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