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;
可能你还有什么属性没有设置,关于某一个获得焦点之类吧,新手仅借鉴