【发布时间】:2014-11-06 21:35:29
【问题描述】:
目标:能够在触发事件处理程序时选中所有复选框。
当前: 事件处理程序按应有的方式触发。我有一个 foreach 循环遍历每一行并选中该行中的复选框。
问题:如果我要在“全选”之前选择一行,则所有复选框都会被选中,除了选中/突出显示的行中的复选框。如果我在此之后单击复选框区域之外的其他位置,则复选框会自行检查。
问题:如何使所有复选框在同一时间被选中,无论选择哪一行?
代码:
foreach (DataGridViewRow row in mTargets.Rows)
{
//row.Cells[(int) menuItem.Tag].Value is the check box
//mDeselect is the boolean that I want to set
row.Cells[(int) menuItem.Tag].Value = !mDeselect;
}
尝试:我尝试过清除选择和暂停/恢复布局。我也尝试过研究看看其他人是否有同样的问题,但这是一个很难找到的话题。
非常感谢任何可以提供帮助的优雅建议或解决方案参考!谢谢!
更新了优雅的解决方案和解释: 发生这种副作用的原因是因为 DataGridViewCheckBoxCell 认为它仍然处于编辑模式,无论何时你碰巧选择了单元格(或者看起来,您正在选择该行)。为了解决这个问题,这是我在 foreach 循环之前放置的代码,它帮助我解决了这个问题:
if (mTargets.IsCurrentCellInEditMode)
{
mTargets.EndEdit();
}
【问题讨论】:
标签: c# .net winforms checkbox datagridview