C# DataGridView表格控件-复选框

添加表头

设置复选框

DataGridViewCheckBoxColumn cell1 = new DataGridViewCheckBoxColumn();
// 表头显示文字
cell1.HeaderText = "";
// 表头宽度
cell1.Width = 80;
selectColDataGridView.Columns.Add(cell1);

点击一次下拉框箭头就展开

描述问题

默认情况下:点击 combobox 文本部分,需要3次点击,单击向下箭头需单击两次,才能展开 combobox

解决

将 EditMode 属性设置为 EditOnEnter

不能禁止编辑(设置readonly)

问题

如果设置为 readonly = true,combobox将不能展开

但是又 不想编辑文字单元格

解决

添加表头时,设置为 ReadOnly

DataGridViewTextBoxColumn cell2 = new DataGridViewTextBoxColumn();
cell2.HeaderText = "列";
cell2.Width = 200;
selectColDataGridView.Columns.Add(cell2);
cell2.SortMode = DataGridViewColumnSortMode.NotSortable;

// 关键代码,禁止编辑
cell2.ReadOnly= true;

添加数据

for (int i = 0; i < selectHeads.Length; i++)
{
    // 添加一行
    int index = selectColDataGridView.Rows.Add();
    // 给该行的第一个单元格是复选框,设置值
    selectColDataGridView.Rows[index].Cells[0].Value = false;
    // 给该行的第二个单元格设置值
    selectColDataGridView.Rows[index].Cells[1].Value = selectHeads[i];
    // 给该行的第三个单元格设置值
    selectColDataGridView.Rows[index].Cells[2].Value = "求和";

}

获取操作

有复选框时,获取勾选的项、索引

int rowIndex = 0;
foreach (DataGridViewRow row in dataGridView.Rows)
{
    bool check = (bool)row.Cells[0].Value; // 第一列是复选框
    if (check)
    {

        System.Diagnostics.Debug.WriteLine(rowIndex + "," + row.Cells[1].Value + "," + row.Cells[2].Value);

    }
    rowIndex++;
}

参考:
https://cloud.tencent.com/developer/ask/sof/112515893