c# DataGridView 中对 DataGridViewCheckBoxColumn 的操作

本文介绍如何在C#中处理DataGridView中的DataGridViewCheckBoxColumn,利用CurrentCellDirtyStateChanged和CellValueChanged事件处理复选框状态变化。通过提交编辑确保获取最新值,并根据CheckBox的状态更新Button的ToolTipText。同时展示了在用户点击批量分派按钮时,根据选中的行进行工单处理的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

如上图所示完成功能:

DataGridView 中根据对“选择”的读取,来读取“工单号”,在根据“工单号”来获取工单类,从而进行批量分派。

 1.       用到了 datagridview CurrentCellDirtyStateChanged CellValueChanged 两个事件

2.       CurrentCellDirtyStateChanged 事件是提交对 checkbox 状态的修改, CellValueChanged 事件是当状态提交后,也就是单元格值改变后做一些其它的操作,这里是将 checkbox 列的 true fa lse 状态作为 tooptiptext 属性设置到同一行的 button

3.       问题:为什么要使用

this.dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
为当我们对 checkbox cell 进行编辑后,你会看到在 RowHeader 上显示一个笔的形状的东西,这说明此列正在编辑,如果直接用 Value 取值,则会获得在编辑之前的值,使用了 CommitEdit 方法后,我们再调用 Value 属性就会获得你看到的值,当然这句话也可以放在 dataGridView 的事件里面进行处理,就不需要再每次遍历之前执行这句了。

4.       具体代码如下:

A.      先定义变量:

List <int > rows = new List <int >();

B.      分别写 CurrentCellDirtyStateChanged CellValueChanged 事件

        private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)

        {

         if (this .dataGridView1.IsCurrentCellDirty){

             this .dataGridView1.CommitEdit(DataGridViewDataErrorContexts .Commit);

         }

        }

        //DateGridView 中的复选框值被改变触发的事件

        private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)

        {

            if (this .dataGridView1.Columns[e.ColumnIndex].Name.Equals("select" )){

               

                DataGridViewCheckBoxCell dgvCheckBoxCell = this .dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewCheckBoxCell ;// 获得checkbox 列单元格

                string boolFlag = dgvCheckBoxCell.Value.ToString();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值