我有一个checklistbox,它有一些顺序的项目,当我点击它的项目并点击提交按钮时,所有项目应该存储在数据库中。
但在这里我想确保用户只选择顺序项,就像用户无法选择a,b,d,f他们应该总是选择a,b,c,d,e,f。
任何人都可以建议我完成这个的逻辑。
答案 0 :(得分:1)
我能够使用如下单循环:
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;
}
}
}
}
首先它将循环遍历所有项目,一旦循环在第二个项目上并且被选中,它将继续并检查是否选择了上一个项目,如果选择了上一个项目,它将继续,否则它将是打破循环标记bool变量false然后外部循环我可以轻松检查标志是真还是假,并相应地显示消息。
答案 1 :(得分:0)
它可能不是最好的逻辑,但至少可以完成这项工作:
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
PS:我没有编译此代码,如果您收到任何错误,请告诉我。