DataGridView实现某列可编辑和ChecBox全选

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

你可能感兴趣的:(GridView)