環境舉例:通過Button按鈕,實現DataGridView中第一列(CheckBox)狀態爲是否全選,且DataGridView只有第一列可編輯,其他爲只讀。
注意:1、DataGridView某列可編輯的前提是DataGridView.ReadOnly=false;否則無論如何設置都無法滿足某列可編輯。
2、DataGridView獲取或者設置列值時,DataGridView.ReadOnly狀態爲False時,是無法設置或者獲取選中行的值。狀態必須爲True。
舉例說明:
1.DataGridView某列可編輯。
//用於處理DataGridView可編輯列
//只讀狀態都不可編輯,只有編輯狀態可以設置單獨列可編輯,其他列只讀。
//可編輯狀態,選中的行是無法獲取數據和設置數據的,所以對所有行的某列進行復制的時,設置DataGridView爲只讀狀態。
private void DataGridViewReadOnlyFalse(DataGridView dataGridView,int columnIndex)
{
dataGridView.ReadOnly = false;
dataGridView.Columns[columnIndex].ReadOnly = false;
for (int i = 0; i < dvToAddress.Columns.Count - 1; i++)
{
dataGridView.Columns[i + 1].ReadOnly = true;
}
}
2.DataGridView列CheckBox全選
private void btnAllSelect_Click(object sender, EventArgs e)
{
dvToAddress.ReadOnly = true;
if (_isSelectAll == false)
{
for (int i = dvToAddress.Rows.Count-1 ; i >= 0; i--)
{
dvToAddress.Rows[i].Cells[0].Value = true;
}
_isSelectAll = true;
}
else
{
for (int i = dvToAddress.Rows.Count-1 ; i >=0 ; i--)
{
dvToAddress.Rows[i].Cells[0].Value = false;
}
_isSelectAll = false;
}
DataGridViewReadOnlyFalse(dvToAddress, 0);
}