C# DataGridViewCell.ReadOnly=false不起作用
好的,我有一段代码,我试着把所有的行都设置为只读,只有少数行 由于每行的条件都会发生变化,我将所有单元格设置为只读,然后解锁需要的单元格 不涉及数据绑定。我使用“原样”网格 单元格[1]是DataGridViewTextBoxCell 单元格[4]是DataGridViewComboxCell 当我这样做时:C# DataGridViewCell.ReadOnly=false不起作用,c#,datagridview,datagridviewcomboboxcell,datagridviewtextboxcell,C#,Datagridview,Datagridviewcomboboxcell,Datagridviewtextboxcell,好的,我有一段代码,我试着把所有的行都设置为只读,只有少数行 由于每行的条件都会发生变化,我将所有单元格设置为只读,然后解锁需要的单元格 不涉及数据绑定。我使用“原样”网格 单元格[1]是DataGridViewTextBoxCell 单元格[4]是DataGridViewComboxCell 当我这样做时: row.ReadOnly = true; row.Cells[1].ReadOnly = false; //Successfully changes from true to false.
row.ReadOnly = true;
row.Cells[1].ReadOnly = false; //Successfully changes from true to false.
row.Cells[4].ReadOnly = false; // This DOES NOT work!
好的,所以我尝试了其他方法:
foreach (DataGridViewCell cell in row.Cells)
{
cell.ReadOnly = true; //Successfully changes from false to true.
}
row.Cells[1].ReadOnly = false; // This DOES NOT work!
row.Cells[4].ReadOnly = false; // This DOES NOT work!
以下是列定义:
textBoxColumn = new DataGridViewTextBoxColumn();
textBoxColumn.Name = "Column0";
textBoxColumn.HeaderText = "My column header";
textBoxColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
textextBoxColumn.Resizable = DataGridViewTriState.True;
textextBoxColumn.SortMode = DataGridViewColumnSortMode.NotSortable;
dataGridView.Columns.Add(textBoxColumn);
comboBoxBoxColumn = new DataGridViewComboBoxColumn();
comboBoxBoxColumn.Name = "Column4";
comboBoxBoxColumn.HeaderText = "My column header";
comboBoxBoxColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
comboBoxBoxColumn.Resizable = DataGridViewTriState.True;
comboBoxBoxColumn.Items.Add("Item 1");
comboBoxBoxColumn.Items.Add("Item 2");
comboBoxBoxColumn.SortMode = DataGridViewColumnSortMode.NotSortable;
dataGridView.Columns.Add(comboBoxBoxColumn);
我就是不明白
编辑:
以下是我创建行的方式:
我首先创建所有(数百)行,然后一次性将它们添加到DataGridView,以避免UI刷新:
row = new DataGridViewRow();
for (Int32 i = 0; i < dataGridView.Columns.Count; i++)
{
DataGridViewCell cell;
DataGridViewColumn column;
column = dataGridView.Columns[i];
cell = (DataGridViewCell)(column.CellTemplate.Clone());
row.Cells.Add(cell);
}
row=新的DataGridViewRow();
对于(Int32 i=0;i
在哪个事件处理程序中将这些单元格只读属性设置为false?不在DataGridView(行)事件中请参见上面的编辑