为DataGridView控件实现复选功能

实现效果:

  

知识运用:

  DataGridViewCheckBoxColumn类

实现代码:

        private class Fruit
        {
            public int Price { get; set; }
            public string Name { get; set; }
            public bool ft;
        }

        private List<Fruit> P_fruit;
        private void Form1_Load(object sender, EventArgs e)
        {
            DataGridViewCheckBoxColumn dgvc = new DataGridViewCheckBoxColumn();         //创建列对象
            dgvc.HeaderText = "状态";                                                   //设置列标题
            dataGridView1.Columns.Add(dgvc);                                            //添加列
            P_fruit = new List<Fruit>()                                                 //创建数据集合
            {
                new Fruit(){Price=21,Name="水蜜桃"},
                new Fruit(){Price=33,Name="榴莲"},
                new Fruit(){Price=24,Name="柑橘"},
                new Fruit(){Price=22,Name="黄柠檬"},
                new Fruit(){Price=21,Name="紫葡萄"}
            };
            dataGridView1.DataSource = P_fruit;                                         //绑定数据集合
            dataGridView1.Columns[0].Width = 50;                                        //设置列宽
            dataGridView1.Columns[1].Width = 140;                                       //设置列宽
            dataGridView1.Columns[2].Width = 150;                                       //设置列宽
        }

        private void btn_remove_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < dataGridView1.Rows.Count; i++)                                       //遍历行集合
            {
                if (dataGridView1.Rows[i].Cells[0].Value != null && dataGridView1.Rows[i].Cells[1].Value != null &&
                    dataGridView1.Rows[i].Cells[2].Value != null)                                    //判断值是否为空
                {
                    if (Convert.ToBoolean(dataGridView1.Rows[i].Cells[0].Value.ToString()))          //判断是否选中项
                    {
                        P_fruit.RemoveAll(                                                           //标记集合中的指定项
                            (pp) =>
                            {
                                if (pp.Name == dataGridView1.Rows[i].Cells[2].Value.ToString() &&
                                    pp.Price == Convert.ToSingle(dataGridView1.Rows[i].Cells[1].Value.ToString()))
                                    pp.ft = true;                                                    //开始标记
                                return false;                                                        //不删除项
                            });
                    }
                }
            }
            P_fruit.RemoveAll(                                                                      //删除集合中的指定项
                (pp) =>
                {
                    return pp.ft;
                });
            dataGridView1.DataSource = null;                                                        //绑定为空
            dataGridView1.DataSource = P_fruit;                                                     //绑定到数据集合
            dataGridView1.Columns[0].Width = 50;                                                    //设置列宽
            dataGridView1.Columns[1].Width = 140;                                                   //设置列宽
            dataGridView1.Columns[2].Width = 150;                                                   //设置列宽
        }

原文地址:https://www.cnblogs.com/feiyucha/p/10206656.html

时间: 2024-08-01 21:28:38

为DataGridView控件实现复选功能的相关文章

C#学习笔记(20140910)-单选控件和单选组控件、复选控件、复选组控件

晚上学习了一下单选控件和单选组控件.复选控件.复选组控件. 稍微动了点脑筋,做了一个小小的网页程序.主要功能是相互赋值已经设置标签的字体大小和颜色已经前后背景色. 主要功能: 1. 在文本输入框中输入文字,提交后可以对标签赋值: 2. 选择单选框可以给标签赋值: 3. 选择单选组控件时可以给标签设置颜色: 4. 选择单选组控件时可以给字体设置大小. 最后的效果如下: 分块设置就不多说了,看看用到了哪些模块吧: 1. 自定义了一个方法,把标签的值赋值给输入框.使得输入框中的内容和标签的内容一致.

Gridviewcontrol控件和DataGridView控件获得当前选中行

Gridviewcontrol控件在事件处理函数中取得当前行的某列的值: string buyPlanId = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "BuyPlanId").ToString(); int buyState = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "BuyState")); 控

【mfc】组框、单选框控件与复选框控件

VC6中的MFC中的单选框与复选框控件也不简单,它没有VS中C#那样可以之间通过一个封装之后的函数进行判断,该单选框/复选框有没有被选中啊?或者控制单选框/复选框的选中状态.这东西比较复杂,通过相应的值来控制的. 一.基本目标 下面就用一个简单例子来说明VC6中的MFC中的单选框与复选框控件,点击"确定"按钮能够判断对话框中的所有单选框与复选框的选中状态.Radio1-Radio3互成一个组,组内仅能够有一个组员被选中,Radio4-Radio5也互成一组,选择Radio4能够令复选框

C#ListView控件添加复选框并获取选中的数目

1.添加复选框:listView1.CheckBoxes = true; 2.选中listview并获取选中的数目: private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e) { e.Item.Selected = e.Item.Checked; m = listView1.CheckedItems.Count; label1.Text = "当前选中数:" + m.ToString(); } 说

TreeView控件添加复选框

Delphi的代码,参考一下吧 首先当然是要在Form加一个TTreeView控件咯.:) 然后在单元的公共uses部分加一个Commctrl单元. 好,接下来要做三件事, 1.在FormCreate事件中 加入如下代码 var dw: DWORD; begin dw := GetWindowLong( TreeView1.Handle, GWL_STYLE); dw := dw or TVS_CHECKBOXES; SetWindowLong(TreeView1.Handle, GWL_STY

获取ListControl控件中(复选框)CheckBox的状态

原文地址:http://blog.chinaunix.net/uid-20680966-id-1896376.html 1 建立测试工程     新建一个对话框工程,并添加一个CListCtrl控件,并关联一个成员变量m_List. 2 设置LVS_EX_CHECKBOXES风格     ListView_SetExtendedListViewStyle(m_List.GetSafeHwnd(), m_List.GetExStyle() | LVS_EX_CHECKBOXES); 3 为list

[asp.net] 通过JS实现对treeview控件的复选框单选控制。

前端JS代码: //识别不同的浏览器 function getTargetElement(evt) { var elem if (evt.target) { elem = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target } else { elem = evt.srcElement } return elem } var lastC = null; function OnClientTreeNodeChecked(ev

DataGridView控件-[引用]

DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需要的特性. 关于本文档: 本文档不准备面面俱到地介绍DataGridView,而是着眼于深入地介绍一些技术点的高级特性. 本文档按逻辑分为5个章节,首先是结构和特性的概览,其次是内置的列/单元格类型的介绍,再次是数据操作相关的内容,然后是主要特性的综述,最后是最佳实践. 大部分章节含有一个"Q &

Android开发CheckBox控件,全选,反选,取消全选

在Android开发中我们经常会使用CheckBox控件,那么怎么实现CheckBox控件的全选,反选呢 首先布局我们的界面: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_paren