2011-03-15 89 views
8

我有一個DataGridView,我想要禁用一些單元格/行與設置ReadOnly = true設置cell.ReadOnly沒有效果

什麼可能是有時這不起作用,單元格/行仍然可編輯的原因?

是否有其他的可能性來防止編輯特定的行或單元?是否有可能防止點擊或進入單元格?

回答

16

您可以阻止使用CellBeginEdit事件進行編輯。如果您不希望單元格被編輯,您可以取消編輯。例如,如果你只是想在第一列可編輯,你可以這樣做:

private void dataGridView1_CellBeginEdit(object sender, 
    DataGridViewCellCancelEventArgs e) 
{ 
    if (e.ColumnIndex != 0) 
    { 
     e.Cancel = true; 
    } 
} 
0

一種可能性是,如果你設置了DataGridView中的只讀屬性(代碼),然後列只讀必須復位:

this.dgv.Columns[0].ReadOnly = true; 
this.dgv.ReadOnly = false; 
// Need to reset the column's ReadOnly state: 
this.dgv.Columns[0].ReadOnly = true; 

你也可以set whole rows爲只讀

1

儘量只讀值設置爲true後運行datagridview.Refresh()