目标:在触发事件处理程序时能够检查所有复选框。
当前情况:事件处理程序按照预期触发。我有一个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();
}