2015-04-02 53 views
0

我有一个datagrid视图,其中每个单元格是布尔值,当用户单击单元格时,我将其另存为true,否则为false。 此外,当用户单击单元格时,其颜色将更改为蓝色,并且如果他重新单击同一单元格,则其颜色会更改为红色。 我将这些布尔值保存在数据库中,稍后检索这些值并填充单元格。Datagrid视图:限制用户不选择某些单元格

将所有这些单元格保存为灰色后。 我想划分我的datagrid视图的方式,从数据库填充的单元格(从用户最后选择)将变得不可点击,其他没有填充的单元格应保持可点击。 当前填充单元格时,先前保存的值,用户可以点击它,它会从默认颜色更改为蓝色(即选择== True)。我想限制用户,以便他不能选择这些单元格。

回答

0

您可以通过处理DataGridViewCellStateChanged事件做到这一点:

private void dataGridView1_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e) 
{ 
    if (...) 
    { 
     e.Cell.Selected = false; 
    } 
} 
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将防止用户值改变到电池中。

相关问题