Member 13512434 Ответов: 1

Datagridviewrow скрывает ячейки


Я пытаюсь скрыть строку, если в ячейке написано "обработка"


частная MainSystem_Load недействительным(объект отправителя, EventArgs в электронной)
{

по каждому элементу (ячейки datagridviewrow доктор в dataGridView4.Строк)
{
if (dr.Cells[7].Value.ToString() == "Обработка")
{
др.Видна = ложь;
}
}
}

Но я получаю сообщение об ошибке, когда запускаю его ...

"Необработанное исключение типа" система.Об' произошел в mscorlib.dll

Дополнительная информация: индекс был вне диапазона. Должно быть неотрицательным и меньше размера коллекции.'

Однако когда я меняю номер "ячейки []" на меньшее число, программа запускается, но без работы кода.

Что я уже пробовал:

Переписывание кода, изменение номера 'cells[]'

1 Ответов

Рейтинг:
4

Karthik_Mahalingam

Цитата:
Дополнительная информация: индекс был вне диапазона. Должно быть неотрицательным и меньше размера коллекции.'

Ошибка ясно говорит о том, что вы пытаетесь получить доступ к index в collection которого нет.
В c# большинство коллекций работает на zero based index, если вы пытаетесь получить доступ к 7-е место столбец в datagridview, то вам придется предоставить index значение как 6.
Вы должны подтвердить, как показано ниже

foreach (DataGridViewRow dr in dataGridView4.Rows)
           {
               int targetColumnIndex = 6;
               if (dr.Cells.Count > targetColumnIndex)  // validate the index
                   if (dr.Cells[targetColumnIndex].Value.ToString() == "Processing")
                   {
                       dr.Visible = false;
                   }
           }