我有一个datagrid视图,其中每个单元格都是布尔值,当用户点击单元格时,我将其保存为true,否则为false。 此外,当用户点击单元格时,其颜色更改为蓝色,如果他重新单击相同的单元格,其颜色将变为红色。 我将这些布尔值保存在数据库中,然后检索这些值并填充单元格。
保存后,所有这些单元格变为灰色。 我想以这样一种方式划分我的数据网格视图,即从数据库填充的单元格(用户的最后选择)将变得不可点击,而其他未填充的单元格应保持可点击状态。 现在,以前保存的值在填充单元格时,用户可以单击它,它将从默认颜色更改为蓝色(即选择== True)。我想要限制用户,以便他不能选择这些单元格。
答案 0 :(得分:0)
您可以通过处理DataGridView
CellStateChanged
事件来执行此操作:
private void dataGridView1_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e)
{
if (...)
{
e.Cell.Selected = false;
}
}
答案 1 :(得分:0)
另一种选择是从数据库加载单元格时,将这些单元格设置为ReadOnly
。然后,您只需向执行颜色更改的CellClick
逻辑添加一个条件。
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. */
}
}
这仍然允许用户选择已加载的单元格,但逻辑检查将阻止颜色更改,而ReadOnly
将阻止用户值更改单元格。