首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

checkbox列的全选,该怎么解决

2012-08-08 
checkbox列的全选想通过单击表头实现 DataGridViewCheckBoxColumn的全选或全不选,当有至少一个checkbox未

checkbox列的全选
想通过单击表头实现 DataGridViewCheckBoxColumn的全选或全不选,当有至少一个checkbox未被选中时,则全部赋值为选中;如原本就是全选中状态,则全部赋值为不选中。
  但由于第一行始终是选择状态(蓝色选中状态,但是checkbox并没有勾上),所以对第一行无效。即使给其赋值为true,也没有出现勾,怎么办?任意点击一个checkbox令其勾上后,下面的程序也是对这一个checkbox无效。

C# code
private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)        {            if (e.RowIndex == -1 && e.ColumnIndex == -1)//单击表头            {                bool checkAll = false;                for (int i = 0; i < dataGridView1.Rows.Count; i++)                {                    if (dataGridView1.Rows[i].Cells[0].Value == null)//没有给checkBox列激活即选中的情况下,直接获取值.ToString会报错                    {                        checkAll = false;//checkBox列还未激活,即都还为选中                        break;                    }                    else if (dataGridView1.Rows[i].Cells[0].Value.ToString() == "True")                    {                        string a = dataGridView1.Rows[i].Cells[0].Value.ToString();                        checkAll = true;                    }                    else if (dataGridView1.Rows[i].Cells[0].Value.ToString() != "True")                    {                        checkAll = false;//有未被选中的记录,则标记全选为false,跳出循环                        break;                    }                }                if (checkAll == false) //存在未选的记录,则更新为全选                {                    for (int i = 0; i < dataGridView1.Rows.Count; i++)                    {                        dataGridView1.Rows[i].Cells[0].Value = true;                    }                }                else //如果原为全选状态,则更新为全不选                {                    for (int i = 0; i < dataGridView1.Rows.Count; i++)                    {                        dataGridView1.Rows[i].Cells[0].Value = false;                    }                    //下面的代码都无法彻底清空行选中状态(不是勾上)                    dataGridView1.ClearSelection();                    dataGridView1.CurrentCell = null;                                     // dataGridView1.Rows[0].Selected = false;                }            }        }



[解决办法]
http://www.cnblogs.com/wuhuacong/archive/2011/12/30/2307600.html
[解决办法]
这里是你要的结果,
http://download.csdn.net/detail/qq81867376/4434784
[解决办法]
你试试这个方法,用
if(Control.XX.GetType().name=="CheckBox")
Object.Items.selected=false;
可能你还有什么属性没有设置,关于某一个获得焦点之类吧,新手仅借鉴

热点排行