我在用户权限管理的某些部分使用了datagridview。 对于每一项权利,DGV中至少有一列复选框。 这些复选框是使用DataGridViewCheckBoxColumns
创建的可以正常或通过上下文菜单对这些进行检查和取消检查,以进行质量(un)检查(全部选中,全部取消选中,全部反转)。 自然,然后以编程方式进行批量(取消)检查。示例代码片段“全部撤消”:
foreach (DataGridViewRow dr in dgv.Rows)
{
dr.Cells[gridcol.Index].Value = !Convert.ToBoolean(dr.Cells[gridcol.Index].Value);
}
在非常特殊的条件下,复选框的状态无法正确刷新:
检查状态似乎保持不变。但是,如果单击其他位置以选择其他行,则显然检查状态会刷新。
我尝试以编程方式清除选择并选择不同的行,但这似乎无法解决问题-看来您实际上需要单击其他行来解决上述问题。
dgv.ClearSelection();
dgv.Rows[2].Selected = true; //Row 2 is just a random one for the sake of testing it
tbCtrlRights_SelectedIndexChanged(sender, e);