我继承了一些我想干的代码到2个循环。
外部循环遍历checkBoxeList对象。 内循环检查所有框。
CheckBoxList[] DefaultLists = { ScanDefaultTasks, BehDefaultTasks,MEGDefaultTasks,DefaultQuestionnaires };
for (int i = 0; i < DefaultLists.Count (); i++) {
for (int j = 0; i < DefaultLists[i].Items.Count; j++)
{
DefaultLists[i].Items[i].Selected = true;
}
}
如何构建DefaultList
以便它存储对每个checkBoxList对象的引用?
如何调用这些引用?
看起来一个解决方案是构建"box" class。这种模式发生了几次,在大多数地方重复了更长的冗余代码。为每个实例构建一个类似乎有点矫枉过正。
原件看起来像
for (int i = 0; i < ScanDefaultTasks.Items.Count; i++)
{
ScanDefaultTasks.Items[i].Selected = true;
}
for (int i = 0; i < BehDefaultTasks.Items.Count; i++)
{
BehDefaultTasks.Items[i].Selected = true;
}
for (int i = 0; i < MEGDefaultTasks.Items.Count; i++)
{
MEGDefaultTasks.Items[i].Selected = true;
}
for (int i = 0; i < DefaultQuestionnaires.Items.Count; i++)
{
DefaultQuestionnaires.Items[i].Selected = true;
}
答案 0 :(得分:1)
DefaultLists是一个存储对包含的CheckBoxLists的引用的数组。所以我没有看到问题。我可以在您的示例中发现的唯一问题是您使用i
,您应该在内部循环中使用j
:
CheckBoxList[] DefaultLists = { ScanDefaultTasks, BehDefaultTasks,MEGDefaultTasks,DefaultQuestionnaires };
for (int i = 0; i < DefaultLists.Count (); i++) {
for (int j = 0; i < DefaultLists[i].Items.Count; j++)
{
DefaultLists[i].Items[j].Selected = true;
}
}
我已在此行中将第二个i
更改为j
:
DefaultLists[i].Items[j].Selected = true;
为了简化一些事情,你也可以为循环使用每个:
CheckBoxList[] DefaultLists = { ScanDefaultTasks, BehDefaultTasks,MEGDefaultTasks,DefaultQuestionnaires };
foreach(var cbl in DefaultLists)
foreach(var item in cbl.Items)
item.Selected = true;
答案 1 :(得分:0)
您可能会这样做:
foreach(var item in new CheckBoxList[]{
ScanDefaultTasks,
BehDefaultTasks,
MEGDefaultTasks,
DefaultQuestionnaires}
.SelectMany(l => l.Items))
item.Selected = true;