2015-04-02 131 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將防止用戶值改變到電池中。

相關問題