我为DataGridView实现了一个标题复选框(from this answer),该复选框选中/取消选中所有复选框。它适用于除第一个复选框以外的所有复选框。仅在单击另一个控件后,第一个复选框才会更新其状态,如下所示:
甚至后来我注意到,不会更新其状态的复选框是手动单击的最后一个复选框。
说实话,我什至不完全知道发生了什么。我尝试过的工作是创建一个不可见的虚拟按钮,然后PerformClick()
,希望将其视为对控件的单击,并会更新复选框的状态。
我也研究了Refresh()
,Update()
和Invalidate()
,但是复选框单元格没有这些方法,我无法做到。
选中/取消选中标题复选框时,将启动此功能:
private bool selectAllChecked = false;
private void SelectAll(object sender, EventArgs e) {
selectAllChecked = !selectAllChecked;
foreach (DataGridViewRow row in myGridView.Rows) {
DataGridViewCheckBoxCell checkb = (DataGridViewCheckBoxCell)row.Cells["Checkbox"];
checkb.Value = selectAllChecked;
}
}
答案 0 :(得分:0)
好像我只是尝试刷新/更新/使复选框单元格无效,而不是DataGridView,并且我使用了错误的方法。
在我的DataGridView(myGridView.RefreshEdit()
)上调用RefreshEdit会更新复选框的状态。
我仍然不确定为什么甚至会发生这种情况,但这可以解决。