DataGridView中添加checkbox后
点击checkbox那个小方框,无论怎么点就是无法勾上,是什么问题啊?
我是这样添加进去的
            this.ProGridView.DataSource = this.ds.Tables[0];
            DataGridViewCheckBoxColumn XuanZe = new DataGridViewCheckBoxColumn();
            ProGridView.Columns.Insert(0, XuanZe);
还有 在winfrm下
我的datagridview里面数据室这样
选择         ID   列名2   列名3
checkbox    1   数据a1   数据a2
checkbox    2   数据b1   数据b2
checkbox    3   数据c1   数据c2    
当我选择 第一跟第三行后
就把第一跟第三行对应的id传递到另外一个winfrm 该怎么做?

解决方案 »

  1.   

    如果用DataTable作为数据源         private void AddSelectColumn(DataTable dt)
            {
                DataColumn dc = new DataColumn("Selected", typeof(bool));
                dc.Caption = "选择";
                dc.DefaultValue = false;
                dt.Columns.Add(dc);
            }
            private void SetSelectedDataTable()
            {
                m_SelectedDataTable = m_DataTable.Clone();
                foreach (DataRow drow in m_DataTable.Rows)
                {
                    if (Convert.ToBoolean(drow["Selected"]) == true)
                    {
                        m_SelectedDataTable.ImportRow(drow);
                    }
                }
            }
    然后再OK事件中
    if (m_DataTable != null && m_DataTable.Rows.Count > 0)
    {
        SetSelectedDataTable();
    //业务操作
    }如果用List<Object>作为数据源
    那么List<实体类> 最好在类中添加一个Bool属性,用作于选择
    下来就好办了。
    如果多选,原理一样用一个水泛型列表,传这个列表就行了,但注意判断重复数据。
      

  2.   

    在datatable里操作好再绑定
    datatable dt=new datatable()
    ..绑定
    dt.Columns.Add("选项",totype(bool));这是手写,注意大小写
      

  3.   

    在datatable里操作好再绑定 
    datatable dt=new datatable() 
    ..读数据 
    dt.Columns.Add("选项",totype(bool)); 
    ..绑数据 这是手写,注意大小写
      

  4.   

    System.Collections.ArrayList array=new ArrayList()
    for(int i=0;i<datagridview1.SelectedRows.Count;i++)
    array.Add(datagridview1.SelectedRows[i].Cell["id"].value.ToString())把这个array传到另一个form
    在那边就可以读取了
      

  5.   

    我用你的代码添加checkbox列,可以打钩啊。
    System.Collections.ArrayList array = new ArrayList();
                for (i = 0; i < ProGridView.Rows.Count; i++)
                {
                    if ((bool)ProGridView.Rows[i].Cells[0].EditedFormattedValue)
                    {
                        array.Add(ProGridView.Rows[i].Cells[1].Value);
                    }
                }
    在另外一个winfrm 访问该array就行了。
      

  6.   

    不知道为什么你可以不用代码 添加  直接在Datagridview 的Columns 属性里添加 一个CheckBox列就可以List<string> list = new List<string>();
    for(int i = 0;i<dataGridview1.Rows.Count -1;i++)
    {
       if(datagridview1.Rows[i].Cells["checkbox列名"].Value == null)
       {
          contiue;
       }
       if((bool)datagridview1.Rows[i].Cells["checkbox列名"].Value)
       {
            list.Add(datagridview1.Rows[i].Cells["ID列"].Value.ToString())
       }
    }