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

标签 c# .net winforms checkbox 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;
}

尝试:我试过清除选择和暂停/恢复布局。我也尝试研究看看其他人是否遇到过同样的问题,但这是一个很难找到的主题。

非常感谢任何对解决方案有帮助的优雅建议或引用!谢谢!


更新了优雅的解决方案和解释:发生这种副作用的原因是 DataGridViewCheckBoxCell 认为它仍然处于编辑模式,无论何时您碰巧选择单元格(或者看起来,您正在选择该行)。为了解决这个问题,下面是我放在 foreach 循环之前的代码,它帮助我解决了这个问题:

if (mTargets.IsCurrentCellInEditMode)
{
    mTargets.EndEdit();
}

最佳答案

之所以会出现这种副作用,是因为 DataGridViewCheckBoxCell 认为只要您碰巧选择了单元格(或者看起来您正在选择该行),它仍处于编辑模式。为了解决这个问题,下面是我放在 foreach 循环之前的代码,它帮助我解决了这个问题:

if (mTargets.IsCurrentCellInEditMode)
{
    mTargets.EndEdit();
}

关于c# - 同时选中DataGridView中的所有复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25812808/

相关文章:

c# - 以缩进格式将 xml 字符串或 XmlNode 保存到文本文件?

c# - C# Windows 窗体鼠标事件问题中的自定义控件

c# - 为重负载任务设置低线程优先级

c# - global.asax 中的 MVC web 应用程序,当 session 超时时如何获取 cookie 值

c# - 有什么办法可以取消鼠标点击事件

.net - 从按钮外部触发按钮的单击事件

c# - datagridview向上滚动

c# - SQL CLR 触发器,由于透明代码调用关键代码,如何使程序集可信?

c# - 尝试连接 MySQL 数据库时 Mono 抛出异常

c# - List<> 不在 DispatcherTimer 中更新