Не удается контролировать свойство только для чтения в сетке данных - PullRequest
0 голосов
/ 03 мая 2020

Я использую datagridview в приложении C#. И мне нужно, чтобы редактировался только один указанный столбец c, но не весь столбец. Последняя строка должна быть только для чтения.

Я установил свойство datagridview только для чтения при проектировании как false. Затем я использовал последовательность кодов, чтобы сделать все остальные столбцы доступными только для чтения:

dataGridView1.Columns["Col1"].ReadOnly = true; dataGridView1.Columns["Col2"].ReadOnly = true; dataGridView1.Columns["Col3"].ReadOnly = true; dataGridView1.Columns["Col4"].ReadOnly = true;

Представление таблицы данных имеет 5 столбцов. На данный момент редактируется только Col5. Но мне нужно, чтобы последний ряд был доступен только для чтения, поэтому я попытался:

dataGridView1.Rows[dataGridView1.Rows.Count - 1].ReadOnly = true;

Это не сработало, весь Col5 все еще доступен для редактирования. Поэтому я попытался:

dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["Col5"].ReadOnly = true;

Это не сработало. Весь Col5 был все еще редактируемым.

Как я могу решить это?

Ответы [ 2 ]

1 голос
/ 03 мая 2020

Метод 1:

Вы можете изменить состояние строки (или ячейки) только для чтения после завершения привязки данных:

dataGridView1.DataBindingComplete += dataGridView1_DataBindingComplete;

И,

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    dataGridView1.Rows[dataGridView1.Rows.Count - 1].ReadOnly = true;
}

Метод 2:

Вы можете отменить редактирование любой ячейки, если строка является последней строкой:

dataGridView1.CellBeginEdit += dataGridView1_CellBeginEdit;

И;

void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
    e.Cancel = e.RowIndex == dataGridView1.Rows.Count - 1;
}
0 голосов
/ 03 мая 2020

Попробуйте установить свойство datagridview.readonly в дизайне как true. Последний столбец только для чтения. И после этого последнего ряда, как только для чтения, правда.

...