目标:能够在触发事件处理程序时检查所有复选框.
当前:事件处理程序应该触发.我有一个遍历每一行的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;
}
ATTEMPTS:我已经尝试清除选择并暂停/恢复布局.我也试图研究,看看其他人是否有同样的问题,但这是一个很难找到的话题.
任何优雅的建议或对可能有用的解决方案的参考都非常感谢!谢谢!
更新优雅解决方案&解释:这种副作用发生的原因是由于DataGridViewCheckBoxCell在您选择单元格时(或者看起来,您正在选择该行)认为它仍处于编辑模式这一事实.为了解决这个问题,这里是我在foreach循环之前放置的代码,它帮助我解决了这个问题:
if (mTargets.IsCurrentCellInEditMode)
{
mTargets.EndEdit();
}
解决方法:
这种副作用发生的原因是由于DataGridViewCheckBoxCell在您碰巧选择单元格时(或者看起来,您正在选择该行)认为它仍然处于编辑模式.为了解决这个问题,这里是我在foreach循环之前放置的代码,它帮助我解决了这个问题:
if (mTargets.IsCurrentCellInEditMode)
{
mTargets.EndEdit();
}