C# Datagrid视图:限制用户不选择某些单元格
我有一个datagrid视图,其中每个单元格都是布尔值,当用户单击单元格时,我将其保存为true,否则保存为false。 此外,当用户点击单元格时,它的颜色会变为蓝色,如果他再次点击同一单元格,它的颜色会变为红色。 我将这些布尔值保存在数据库中,稍后检索这些值并填充单元格 保存后,所有这些单元格都变为灰色。 我希望以这样的方式划分我的datagrid视图,即从数据库中填充的单元格(用户最后选择的单元格)将变得不可点击,而其他未填充的单元格应保持可点击状态。C# Datagrid视图:限制用户不选择某些单元格,c#,datagridview,C#,Datagridview,我有一个datagrid视图,其中每个单元格都是布尔值,当用户单击单元格时,我将其保存为true,否则保存为false。 此外,当用户点击单元格时,它的颜色会变为蓝色,如果他再次点击同一单元格,它的颜色会变为红色。 我将这些布尔值保存在数据库中,稍后检索这些值并填充单元格 保存后,所有这些单元格都变为灰色。 我希望以这样的方式划分我的datagrid视图,即从数据库中填充的单元格(用户最后选择的单元格)将变得不可点击,而其他未填充的单元格应保持可点击状态。 现在以前保存的值在填充单元格时,用户可
现在以前保存的值在填充单元格时,用户可以单击它,它将从默认颜色更改为蓝色(即selected==True)。我希望限制用户,使其无法选择这些单元格。您可以通过处理
DataGridView
的CellStateChanged
事件来完成此操作:
private void dataGridView1_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e)
{
if (...)
{
e.Cell.Selected = false;
}
}
另一个选项是从数据库加载单元格时,将这些单元格设置为
ReadOnly
。然后,您只需在单元格中添加一个条件,然后单击执行颜色更改的逻辑
foreach (bool value in /* values loaded from the database */ )
{
var cell = this.dataGridView1.Rows[rowToLoad].Cells[columnToLoad];
cell.Value = value;
cell.ReadOnly = true;
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (!this.dataGridView1.CurrentCell.ReadOnly)
{
/* Your color logic. */
}
}
这仍然允许用户选择加载的单元格,但逻辑检查将阻止颜色更改,而只读
将阻止用户更改单元格值