我想改进此代码,其目标是像excel过滤器一样工作。如果所选行的所有复选框均为true,则该函数(由按钮触发)将它们全部设为false,如果它们都是false,则将它们设置为true,并且如果它们中的至少一个是{{1 }}或false
,然后它们都变为真实。但我的代码仅在全部true
或true
时才有效。另一个条件并不总是有效,这是因为代码的最后一部分没有抛出正确的结果。
复选框位于第3列,从7到19,总共21个。
false
答案 0 :(得分:0)
如果你想处理行,那么你应该遍历行,然后遍历行的每一列。如果你想处理特定的行,那么你必须访问当前行索引并使用它来访问细胞。
您可以从第一列的值开始,并在迭代时检查它是否发生了变化。如果它改变了,那么调用一个函数来设置所需的值,如果不是在最后调用该函数。
public void seleciona_check()
{
bool changed = false; //boolean to see if something changed
bool compareTo=(bool)grid_lic.CurrentRow.Cells[3].Value; // take the first value as reference point
for (int j = 7; j < grid_lic.ColumnCount - 1; j++) // for loop to check
{
if ((bool)grid_lic.CurrentRow.Cells[j].Value != compareTo)
{
changed = true;
SetAllValues(changed);
break; //no need to go on if there are true and false values
}
}
if (changed == false) SetAllValues ( compareTo );
}
public void SetAllValues(bool toSet)
{
for (int j = 7; j < grid_lic.ColumnCount - 1; j++) // for loop to check
{
grid_lic.CurrentRow.Cells[j].Value = toSet;
}
}