C# DataGridView表格控件-复选框

添加表头

设置复选框

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

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

描述问题

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

解决

EditMode 属性设置为 EditOnEnter

不能禁止编辑(设置readonly)

问题

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

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

解决

添加表头时,设置为 ReadOnly

  1. DataGridViewTextBoxColumn cell2 = new DataGridViewTextBoxColumn();
  2. cell2.HeaderText = "列";
  3. cell2.Width = 200;
  4. selectColDataGridView.Columns.Add(cell2);
  5. cell2.SortMode = DataGridViewColumnSortMode.NotSortable;
  6. // 关键代码,禁止编辑
  7. cell2.ReadOnly= true;

添加数据

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

获取操作

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

  1. int rowIndex = 0;
  2. foreach (DataGridViewRow row in dataGridView.Rows)
  3. {
  4. bool check = (bool)row.Cells[0].Value; // 第一列是复选框
  5. if (check)
  6. {
  7. System.Diagnostics.Debug.WriteLine(rowIndex + "," + row.Cells[1].Value + "," + row.Cells[2].Value);
  8. }
  9. rowIndex++;
  10. }

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


原文出处:http://malaoshi.top/show_1GWoNWI9UcL.html