【问题标题】:DataGridView checkbox doesn't update until another control is clicked on在单击另一个控件之前,DataGridView 复选框不会更新
【发布时间】:2018-06-29 15:18:11
【问题描述】:

我为我的 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;
    }
}

【问题讨论】:

    标签: c# winforms checkbox datagridview


    【解决方案1】:

    看起来我只是尝试刷新/更新/使复选框单元格无效,而不是 DataGridView,而且我使用了错误的方法。

    在我的 DataGridView (myGridView.RefreshEdit()) 上调用 RefreshEdit 会更新复选框的状态。

    我仍然不确定为什么会发生这种情况,但可以解决它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 2016-05-13
      • 2018-06-05
      • 1970-01-01
      相关资源
      最近更新 更多