解决方案 »

  1.   

    自定义列的类型,自己做一个自定义控件,里面放置多个checkbox,然后把这个自定义组件放置到列里
    自定义列类型,参考
    http://www.cnblogs.com/geovindu/archive/2011/11/16/2251075.html
      

  2.   

    DataGridView控件中绑定复选框实例
    //加载绑定数据集合
     private List<Fruit> P_Fruit;        private void Frm_Main_Load(object sender, EventArgs e)
            {
                DataGridViewCheckBoxColumn dgvc =//创建列对象
                    new DataGridViewCheckBoxColumn();
                dgvc.HeaderText = "状态";//设置列标题文本
                dgv_Message.Columns.Add(dgvc);//添加列
                P_Fruit = new List<Fruit>() {//创建数据集合
                new Fruit(){Name="海鲜",Price=30},
                new Fruit(){Name="山货",Price=40},
                new Fruit(){Name="水果",Price=33},
                new Fruit(){Name="肉禽类",Price=31}};
                dgv_Message.DataSource = P_Fruit;//绑定数据集合
                dgv_Message.Columns[0].Width = 50;//设置列宽度
                dgv_Message.Columns[1].Width = 170;//设置列宽度
                dgv_Message.Columns[2].Width = 150;//设置列宽度        }
    //点选复选框删除相应数据
     private void btn_Remove_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < dgv_Message.Rows.Count; i++)//遍历行集合
                {
                    if (dgv_Message.Rows[i].Cells[0].Value != null &&
                        dgv_Message.Rows[i].Cells[1].Value != null &&
                        dgv_Message.Rows[i].Cells[2].Value != null )//判断值是否为空
                    {
                        if (Convert.ToBoolean(dgv_Message.Rows[i].//判断是否选中项
                            Cells[0].Value.ToString()))
                        {
                            P_Fruit.RemoveAll(//标记集合中指定项
                                (pp) =>
                                {
                                    if (pp.Name == dgv_Message.Rows[i].Cells[1].Value.ToString() &&
                                        pp.Price == Convert.ToSingle(
                                        dgv_Message.Rows[i].Cells[2].Value.ToString()))
                                        pp.ft = true;//开始标设
                                     return false;//不删除项
                                });
                        }
                    }
                }//CodeGo.net/
                P_Fruit.RemoveAll(//删除集合中指定项
                    (pp) =>
                    {
                        return pp.ft; 
                    });
                dgv_Message.DataSource = null;//绑定为空
                dgv_Message.DataSource = P_Fruit;//绑定到数据集合
                dgv_Message.Columns[0].Width = 50;//设置列宽度
                dgv_Message.Columns[1].Width = 170;//设置列宽度
                dgv_Message.Columns[2].Width = 150;//设置列宽度
            }