我想如何实现这一目标,我尝试了在SO上找到的许多解决方案,但没有一个起作用
例如,我希望能够检查第一个和第二个选项,但是当我检查其中一个而其他两个未选中时,如何避免这种情况呢?
我想知道需要更改哪些事件或属性才能单独选择多个复选框,而无需使用主复选框来选择所有这些事件或属性,希望您能为我提供帮助。
我在datagridview的CellClick
事件中尝试了这段代码
var isChecked = (bool)DGVProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
if (isChecked)
{
foreach (DataGridViewRow row in DGVProductos.Rows)
{
if (row.Index != e.RowIndex)
{
row.Cells["CheckProducto"].Value = !isChecked;
}
}
}
答案 0 :(得分:0)
我不确定您的foreach
循环试图完成什么,但是它取消了所有其他未选中的框的选择。如果您希望将各个框分别选中并保持选中状态,请删除foreach
循环。
答案 1 :(得分:0)
目前尚不清楚您要实现的目标,编写的代码与所描述的完全相反,只需删除该代码,您就可以检查单个单元格。
尽管如果您试图将该列用作选择指示符,因此该列未绑定到任何属性,请注意,这是不可能的,因为该列未绑定到检查1个行单元的对象将自动检查所有行,反之亦然。
侧面说明:无论您想实现什么,都应该在CellContentClick
事件而不是CellClick
上调用用户选中/取消选中复选框时需要运行的代码事件。
答案 2 :(得分:-1)
我找到了解决方案,希望将此处的代码供其他遇到相同问题的人参考
private void DGVProductos_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
if ((bool)DGVProductos.SelectedRows[e.ColumnIndex].Cells["CheckProducto"].Value == false)
{
DGVProductos.SelectedRows[e.ColumnIndex].Cells["CheckProducto"].Value = true;
}
else
{
DGVProductos.SelectedRows[e.ColumnIndex].Cells["CheckProducto"].Value = false;
}
}
}
通过这种方式,我可以像问题一样单独检查多个复选框,不确定是否是最好的方法,但这对我有用