【问题标题】:Run code when a Datagrid checkbox is checked/unchecked, and get the changed value在选中/取消选中 Datagrid 复选框时运行代码,并获取更改后的值
【发布时间】:2015-03-05 23:29:57
【问题描述】:

当数据网格上的复选框被选中/取消选中时,我需要执行代码,没什么好说的。

所以我有:

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
        txtCCs.Text = String.Empty;
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (Convert.ToBoolean(row.Cells[CC.Name].Value) == true)
            {
                txtCCs.Text += row.Cells[3].Value.ToString().Trim() + ", ";
            }
        }
    }

这适用于一个新的裸项目,但没有我的实际项目,它在哪里运行但看不到更改的值。因此,如果我单击 1 个框,则没有任何反应,单击另一个它现在可以看到第一个已选中,但错过了单击以触发它的那个。即使我的代码中有 CommitEdit。

编辑:我完全删除了 CellContentClick 代码并删除了该功能,现在它可以工作了。不确定问题是什么,因为它仍然会运行,只是不执行 commitEdit。

【问题讨论】:

  • 将值 = true 还是将 = "true" 作为字符串..?当您添加断点时,它是否会命中您发布的代码。
  • 当复选框被点击时该函数不会运行,但是在它被勾选后,我点击同一行,该函数将运行并且值将=true作为布尔值并执行它事情。
  • 你是机器人吗,正如我已经明确说过的那样,这不是我需要的,也不起作用。该页面甚至说它不适用于复选框。但是,它确实提到了“CellValueChanged”,我正试图开始工作,但是当我将我在帖子中显示的代码放在“CellValueChanged”函数中时,它给出了错误提示“索引超出范围”,我没有'不明白,因为它的功能应该与 cellContentClick 相同,不会出错。
  • 您需要发布更多代码以供任何人解决。我建议您在初始化网格并设置其属性以及您连接的任何其他网格事件的位置发布代码。

标签: c# winforms checkbox datagridview


【解决方案1】:

您需要先提交编辑:

void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) {
  dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
  txtCCs.Text = String.Empty;
  foreach (DataGridViewRow row in dataGridView1.Rows) {
    if (Convert.ToBoolean(row.Cells[CC.Name].Value) == true) {
      txtCCs.Text += row.Cells[3].Value.ToString().Trim() + ", ";
    }
  }
}

【讨论】:

  • 不,这只是我目前拥有的,它只是看不到更改的值。代码运行,但它只是没有看到任何不同的值。
  • @Tom 这不是我所看到的。我所做的每一个复选标记更改都会立即更新屏幕上的文本。
  • 我确实觉得有些东西在弄乱它,但我有一个真正的基本形式,它的功能就像我说的那样:/
  • @Tom 根据您问题顶部的评论,当您单击复选框时,CellContentClick 将运行。你的活动安排妥当了吗?
  • 我同意@LarsTech 的观点,即有其他东西在干扰。如果您的.Cells[3] 列的单元格中已经有值,那么您应该会看到所有已检查行的字符串更新 - 包括您刚刚检查的行。我确认它正在使用 CellValueChanged 事件。
猜你喜欢
  • 2020-10-05
  • 2019-03-04
  • 2019-10-30
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多