DGV中以编程方式选中的复选框未显示为选中状态

时间:2020-02-19 10:10:41

标签: c# winforms datagridview

我在用户权限管理的某些部分使用了datagridview。 对于每一项权利,DGV中至少有一列复选框。 这些复选框是使用DataGridViewCheckBoxColumns

创建的

可以正常或通过上下文菜单对这些进行检查和取消检查,以进行质量(un)检查(全部选中,全部取消选中,全部反转)。 自然,然后以编程方式进行批量(取消)检查。示例代码片段“全部撤消”:

foreach (DataGridViewRow dr in dgv.Rows)
{
    dr.Cells[gridcol.Index].Value = !Convert.ToBoolean(dr.Cells[gridcol.Index].Value);
}

在非常特殊的条件下,复选框的状态无法正确刷新:

  • 左键单击DGV中带有复选框的单元格(不必(取消)选中该过程中的复选框)
  • 单击上下文菜单按钮,该按钮将更改所单击的单元格的内容

检查状态似乎保持不变。但是,如果单击其他位置以选择其他行,则显然检查状态会刷新。

我尝试以编程方式清除选择并选择不同的行,但这似乎无法解决问题-看来您实际上需要单击其他行来解决上述问题。

dgv.ClearSelection();
dgv.Rows[2].Selected = true; //Row 2 is just a random one for the sake of testing it
tbCtrlRights_SelectedIndexChanged(sender, e);

0 个答案:

没有答案