DataGridViewComboBoxCell.ReadOnly = true,但仍然可以更改所选值

DataGridViewComboBoxCell.ReadOnly = true, but can still change the selected value

我在 C# 中遇到 DataGridView 和 DataGridViewComboBoxCell 的问题(Visual Studio 2013,.NET 4.5.1)

DataGridView 有 3 列 DataGridViewComboBoxColumn 和 3 列 DataGridViewTextBoxColumn。

DataGrid 绑定到 DataTable

我需要为每个单元格单独设置只读 属性:

对于现有行: 只有最后一个单元格 (DataGridViewTextBoxCell) 可以编辑。

添加新行时,除两个文本框单元格外的所有单元格都应是可编辑的。

我的问题是,即使 ReadOnly = true,最终用户仍然可以更改 DataGridViewComboBoxCells 的选择;

在 DataGridViewTextBoxCells 上设置 ReadOnly=true 效果很好

在 DataGridViewComboBoxCell 上设置 ReadOnly=true 无效。 当写出 ReadOnly 属性 时,它 returns 为真,但单元格仍可编辑。

您可以在 DataGridView.CellBeginEdit:

中使用类似的代码
If Not <your code to verify if you are adding a new row> Then
    If Not YourDataGridView.Columns(e.ColumnIndex).Name = "EditableColumnName" Then
        e.Cancel = True
    End If
End If

这应该以更直接的方式更正 readonly=true 被忽略的问题: