2016-04-06 3 views
-1

У меня есть DataGridView, где мне нужно отключить строки, где значение флажка на этой строке не проверяется, вот код:Невозможно изменить цвет DataGridView или установить ReadOnly

 foreach (DataGridViewRow row in catView.Rows) 
     { 
      if (row.Cells[1].FormattedValue.ToString() != "true") 
      { 
       for (int i = 0; i < row.Cells.Count; i++) 
       { 
        row.Cells[i].Style.ForeColor = Color.Gray; 
        row.Cells[i].ReadOnly = true; 
       } 
      } 
     } 

Проблема заключается в том, что это Безразлично 't установить цвет или отключить флажок, что я ошибаюсь?

Спасибо.

Подробнее:

клетки [1] является столбцом флажок.

+1

'for (int i = 1; i == row.Cells.Count; i ++)' what heck is this - тело, скорее всего, никогда не будет выполнено. –

+0

Заципирует все ячейки в строке и задает значения ForeColor и ReadOnly, по крайней мере, это то, что нужно делать. –

+0

Спасибо, отредактировал цикл, но проблема по-прежнему заключается в том, что даже если цикл ссылается на каждую ячейку, эти ячейки не имеют своих значений для ForeColor и ReadOnly. –

ответ

0

Попробуйте заменить ваше выражение for с этим:

for (int i = 0; i < row.Cells.Count; i++) 
+0

Спасибо , это была ошибка, но все же проблема стоит с исправленным циклом, значения для каждой ячейки не установлены, я действительно не знаю, почему. –

+0

Вы поставили точку останова в своем цикле, чтобы увидеть, попали ли линии, задающие цвет и только что прочитанный? – devuxer

+0

Отсутствие возможности отладки здесь, поскольку существуют сложные зависимости для приложения, доступ к которым невозможно получить, когда он запускается непосредственно из Visual Studio. Я добавил вывод отладки в цикл, хотя и показывает, что ячейки окончательно зацикливаются. –

0

Вы должны размерности новый DataGridViewRow и установить его. В VB.NET я хотел бы сделать:

dim MyLine as new DataGridViewRow 
with MyLine 
     .Cells[i].DefaultCellStyle.ForeColor = Color.Gray; 
     .Cells[i].ReadOnly = true; 
end with 

Попробуйте.

-1

Я не смог найти способ прямого обновления datagrid, если его источником был datagrid, код работает отлично после ручного создания столбцов и вручную добавления строк в datagrid.

Я предполагаю, что те, которые используют данные для заполнения datagrid, должны будут обновить ячейки с помощью обработчика события изменения формата, который фиксирует изменения при рисовании datagrid.

Смежные вопросы