Свойство DataGridView.ReadOnly
ЗАПРЕЩАЕТСЯ любое свойство строки / столбца / ячейки только для чтения. «ЕСЛИ» свойство сетки только для чтения установлено на true
.Это можно увидеть во втором опубликованном коде, который «не работает».
Согласно документации MS для свойства DataGridViewRow.ReadOnly
в разделе замечаний…
Установка этого свойства не имеет никакого эффекта, если значение свойства DataGridView.ReadOnly равно true.
Возможное решение - оставить свойство «grid» только для чтения как false
, затем выполнить циклчерез строки сетки и установите свойство каждой строки только для чтения на true
.Затем он должен работать, как и ожидалось.
Пример ниже приведен на C #, однако та же идея применима и к использованию VB.
Сначала метод для обхода сетки и установки каждой строки только для чтения.свойство к true
…
private void SetRowsReadOnly() {
foreach (DataGridViewRow row in TrandetlDataGridView.Rows) {
row.ReadOnly = true;
}
}
Затем, используя ваш пример «не работает», замените установку свойства «только для чтения» на сетку вызовом метода, описанного выше, и он должен работать как положено.
private void button2_Click(object sender, EventArgs e) {
SetRowsReadOnly();
TrandetlDataGridView.CurrentRow.ReadOnly = false;
}
Надеюсь, это поможет.