主页>技术社区>IT 技术>编程开发>C#

C# winfrom 中datagridview中checkbox的使用方法

eIT.com.cn 2022/11/26 23:24:47 阅读 52 次

打印


一:
private void dgv_zy_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
            int count = Convert.ToInt16(dgv_zy.Rows.Count.ToString());
            for (int i = 0; i < count; i++)
            {
                DataGridViewCheckCell checkCell = (DataGridViewCheckCell)dgv_zy.Rows[i].Cells["cb_check"];
                Boolean flag = Convert.ToBoolean(checkCell.Value);
               if (flag == true)     //查找被选择的数据行
                {            
                    checkCell.Value = false;
                }
                else
                   continue;
            }
      }
}

选择的数据

          int count = Convert.ToInt32(dgv_zy.Rows.Count.ToString());
          for (int i = 0; i < count; i++)
            {
                //如果DataGridView是可编辑的,将数据提交,否则处于编辑状态的行无法取到
             dgv_zy.EndEdit();
                DataGridViewCheckCell checkCell = (DataGridViewCheckCell)dgv_zy.Rows[i].Cells["cb_check"];
               Boolean flag = Convert.ToBoolean(checkCell.Value);
                if (flag == true)     //查找被选择的数据行
               {
                   //从 DATAGRIDVIEW 中数据项
                string z_zcode = dgv_zy.Rows[i].Cells[0].Value.ToString().Trim();

                }
            }

二:

如果需要在winform 的数据控件datagridview 中嵌入check列 (  DataGridViewCheckCell ),
在程序的执行中有可能需要像纯粹的check控件的selecteexchanged事件一样的事件来捕捉其状态的改变

我觉得比较好的方式是用datagridview 控件的cellcontentclick事件   例如:

如果嵌入的 DataGridViewCheckCell 列在第一列,判断状态并处理事件可以为:

  private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

            if (e.ColumnIndex == 0 && e .RowIndex != -1)
            {

                     //控件的值

                    Message.Show(this.dataGridView1.Rows[e.RowIndex].Cells[0].EditedFormattedValue.ToString());

                //或者可以做其他事件处理程序

            }

}

需要注意的是执行此事件是需要其他datagridview单元格的cellcontentclick事件 ,即让除了 DataGridViewCheckCell 列

之外的所有列的ReadOnly=True;

  在datagridview中check列的值得时候 一定要用 EditedFormattedValue,此的是编辑以后数值 而value 和

FormattedValue返回的往往是编辑以前的数值,而其重复单击的时候往往会出现(无法确定是编辑前还是编辑后的数值: 主要

原因是焦点问题,需要先移动焦点使datagridview更改后的数据在区他 就没有问题了,所以以后用去数据前先要移出

datagridview中的焦点!!!),所以一定要用EditedFormattedValue来值

 

总结

以上是为你收集整理的全部内容。

如果觉得网站内容还不错,欢迎将推荐给好友。






相关内容


热门栏目


特别声明


最新资讯
热讯排行



合作媒体友情链接
生活常识小贴士 软件开发教程 智慧城市生活网 息县通生活服务[移动版] 息县商圈[移动版] 美食菜谱
健康养生 法律知识 科技频道 电影影讯 留学考研学习 星座生肖|解梦说梦




关于我们 | 联系我们 | 合作媒体 | 使用条款 | 隐私权声明 | 版权声明

      Copyright © 2023 eIT.com.cn. All Rights Reserved. 豫ICP备2022012332号