确保在复选框中选择了顺序项目
本文关键字:顺序 项目 选择 复选框 确保 | 更新日期: 2023-09-27 18:28:50
我有一个复选列表框,它有一些按顺序排列的项目,当我点击其中的项目并点击提交按钮时,所有项目都应该存储在数据库中。
但在这里,我想确保用户只选择顺序项目,就像用户不能选择a、b、d、f一样,他们应该总是选择a、b、c、d、e、f。
有谁能告诉我实现这一目标的逻辑吗。
我能够处理如下的单个循环:
for (int i = 0; i < chkBox.Items.Count; i++)
{
if (i > 0)
{
if (chkBox.Items[i].Selected)
{
if (chkBox.Items[i - 1].Selected)
continue;
else
{
_isSequentialSelected = false;
break;
}
}
}
}
首先,它将遍历所有项目,一旦循环在第二个项目上并被选中,它将继续并检查前一个项目是否被选中,如果前一个项被选中,则它将继续,否则它将打破循环,标记布尔变量false,然后在循环外,我可以很容易地检查标记是true还是false,并相应地显示消息。
这可能不是最好的逻辑,但它至少能完成任务:
List<int> selectedvalues = new List<int>();
bool isSequence = true;
//get all selected indices
for(int i = 0; i < checkboxlist.Items.Count; i++)
if(checkboxlist.Items[i].Selected)
selectedvalues.Add(i);
//start from first selected index, go to last selected index
for(int i = selectedvalues[0]; i < selectedvalues[selectedvalues.Length - 1]; i++)
if(i != selectedvalues[i])
{
isSequence = false;
break;
}
第一个测试用例:
User selected indices: 3, 4, 7, 8
Now second loop:
i = 3, index = 3
i = 4, index = 4
i = 5, index = 7 //false and break
第二个测试用例:
User selected indices: 3, 4, 5, 6
Now second loop:
i = 3, index = 3
i = 4, index = 4
i = 5, index = 5
i = 6, index = 6 //success
附言:我还没有编译这个代码,如果你有任何错误,请告诉我。