【发布时间】: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