s yu Ответов: 1

Динамически устанавливаемые ячейки datagridview только для чтения


Используя приведенный ниже код, я попытался динамически установить ячейки DataGridView только для чтения, чтобы сделать текст в ячейках не редактируемым. Но это не работает, разве я сделал что-то неправильно? Спасибо.
void setDataGridViewRow(DataGridView dgv, int iCase)  {  
   for (int i = 0; i < dgv.RowCount; i++)   {
      DataGridViewRow row = dgv.Rows[i];
      for (int j = 0; j < row.Cells.Count; j++)  {
         if (j < 2 || !IsEditableField(row.Cells[0].Value.ToString()))   {
             row.Cells[j].ReadOnly = true;
             row.Cells[j].ToolTipText = "Not Editable";
         }  else
             row.Cells[j].ReadOnly = false;
         }
      }
   }
}


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

Dynamically Set DataGridView Cells ReadOnly 
но не работает

1 Ответов

Рейтинг:
5

RickZeeland

Может быть, вы можете попробовать что-то вроде этого:

private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
   if (e.ColumnIndex < 2) 
   { 
      e.Cancel = true;
   }
}
Если это не работает попробуйте это: Сложность установки ячеек только для чтения в DataGridView[^]


s yu

Решается с помощью приведенного ниже кода:
for (int j = 0; j < row.Ячейки.Count; j++) {
если (j < 2//!IsEditableField(строки.Ячейки[0].Значение.Метод toString())) {
ряд.Клеток[Дж].Толькочтение = истина;
ряд.Клетки[j].ToolTipText = " Не Редактируется";
} еще
ряд.Ячейки[j]. ReadOnly = false;
}
Спасибо за ваши отзывы.