在C# WinForms应用开发中,DataGridView是展示表格数据的常用控件,给其添加复选框列实现多选功能,能满足批量操作数据的需求,比如批量删除、批量导出等场景都需要用到这个功能。

一、添加复选框列的两种方式
1. 设计器手动添加
打开WinForms窗体的设计器,选中DataGridView控件,点击右上角的智能标签,选择编辑列,在弹出的窗口中点击添加按钮,将列的类型选择为DataGridViewCheckBoxColumn,设置列的Name为colCheck,HeaderText为选择,点击确定即可完成复选框列的添加。
2. 代码动态添加
如果需要在运行时动态生成复选框列,可以使用以下代码实现:
// 创建复选框列对象 DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn(); // 设置列的基础属性 checkColumn.Name = "colCheck"; checkColumn.HeaderText = "选择"; checkColumn.Width = 60; // 设置复选框列的默认值,未选中状态 checkColumn.FalseValue = false; checkColumn.TrueValue = true; // 将列添加到DataGridView中 dataGridView1.Columns.Add(checkColumn);
二、监听复选框选中状态变化
当用户点击复选框时,需要监听选中状态的变化,可以通过CellContentClick事件实现,代码如下:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
// 判断点击的是不是复选框列
if (e.ColumnIndex == dataGridView1.Columns["colCheck"].Index && e.RowIndex >= 0)
{
// 获取当前点击的单元格
DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)dataGridView1.Rows[e.RowIndex].Cells["colCheck"];
// 切换选中状态,需要先结束编辑才能获取到最新值
dataGridView1.EndEdit();
// 获取当前选中状态
bool isChecked = Convert.ToBoolean(checkCell.Value ?? false);
// 可以在这里处理选中状态变化后的逻辑
if (isChecked)
{
MessageBox.Show($"第{e.RowIndex + 1}行被选中");
}
}
}
注意这里需要先调用EndEdit方法,否则获取到的复选框值可能是修改前的旧值。
三、获取所有选中的行数据
实现多选功能后,通常需要获取所有选中的行数据,以下是批量获取选中行的示例代码:
private List<string> GetSelectedData()
{
List<string> selectedData = new List<string>();
// 遍历所有行
foreach (DataGridViewRow row in dataGridView1.Rows)
{
// 跳过新行(DataGridView最后一行默认的空行)
if (row.IsNewRow)
{
continue;
}
// 获取复选框单元格的值
DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)row.Cells["colCheck"];
bool isChecked = Convert.ToBoolean(checkCell.Value ?? false);
if (isChecked)
{
// 假设第二列是要获取的数据,这里可以根据实际需求调整列索引
string rowData = row.Cells[1].Value?.ToString();
if (!string.IsNullOrEmpty(rowData))
{
selectedData.Add(rowData);
}
}
}
return selectedData;
}
四、完整示例演示
以下是一个完整的窗体加载后绑定数据并添加复选框列的示例:
private void Form1_Load(object sender, EventArgs e)
{
// 先添加复选框列
DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
checkColumn.Name = "colCheck";
checkColumn.HeaderText = "选择";
dataGridView1.Columns.Add(checkColumn);
// 添加其他数据列
dataGridView1.Columns.Add("colId", "ID");
dataGridView1.Columns.Add("colName", "名称");
// 绑定测试数据
for (int i = 1; i <= 5; i++)
{
dataGridView1.Rows.Add(false, i, $"测试数据{i}");
}
// 绑定单元格点击事件
dataGridView1.CellContentClick += dataGridView1_CellContentClick;
}
// 点击按钮获取选中数据
private void btnGetSelected_Click(object sender, EventArgs e)
{
List<string> selectedList = GetSelectedData();
if (selectedList.Count > 0)
{
MessageBox.Show($"选中的数据为:{string.Join(",", selectedList)}");
}
else
{
MessageBox.Show("未选中任何数据");
}
}
按照以上步骤操作,就可以在C#的DataGridView中成功添加复选框并实现多选功能,满足批量操作数据的需求。
C#DataGridView复选框多选功能WinForms修改时间:2026-07-23 03:36:15