You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击DataGridView中Checkbox列实现Count列数值递增

DataGridView勾选Checkbox时对应Count列数值自动调整的实现

问题说明

当DataGridView中勾选指定Checkbox列时,需要对应行的Count列数值自动加1(取消勾选时可选择减1),原代码仅实现0和1的切换,无法满足累计增减需求,且事件选择存在状态判断误差。

修正后的代码

// 处理单元格值变化事件,确保Checkbox状态更新后再调整Count列
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    // 验证行和列的有效性,指定Checkbox列名为"Attendance"
    if (e.RowIndex >= 0 && e.ColumnIndex == dataGridView1.Columns["Attendance"].Index)
    {
        DataGridViewCheckBoxCell checkBoxCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewCheckBoxCell;
        if (checkBoxCell != null)
        {
            bool isChecked = Convert.ToBoolean(checkBoxCell.Value);
            
            // 获取Count列当前值,为空则默认0
            int currentCount = dataGridView1.Rows[e.RowIndex].Cells["Count"].Value != DBNull.Value 
                ? Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["Count"].Value) 
                : 0;
            
            // 勾选时Count加1,取消勾选时减1(确保数值不小于0)
            if (isChecked)
            {
                dataGridView1.Rows[e.RowIndex].Cells["Count"].Value = currentCount + 1;
            }
            else
            {
                dataGridView1.Rows[e.RowIndex].Cells["Count"].Value = Math.Max(currentCount - 1, 0);
            }
        }
    }
}

// 处理Checkbox点击事件,强制提交编辑以触发CellValueChanged
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex >= 0 && e.ColumnIndex == dataGridView1.Columns["Attendance"].Index)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

关键说明

  1. 事件选择:使用CellValueChanged而非CellClick,因为点击Checkbox后状态不会立即更新,CellClick触发时获取的是旧状态,导致逻辑错误;配合CellContentClick中的CommitEdit,确保Checkbox状态提交后再处理Count列。
  2. 空值处理:判断Count列是否为空,避免转换异常。
  3. 灵活调整:如果仅需要勾选时加1、取消时不改变数值,可删除else分支。

内容的提问来源于stack exchange,提问作者Ali Shan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 15:47:20