c# – 同时选中DataGridView中的所有复选框

目标:能够在触发事件处理程序时检查所有复选框.

当前:事件处理程序应该触发.我有一个遍历每一行的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();
}
上一篇:MCU焊接注意事项


下一篇:RISC-V MCU开发 (四):编译配置