环境举例:通过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);
}