确保在复选框中选择了顺序项目

本文关键字:顺序 项目 选择 复选框 确保 | 更新日期: 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

附言:我还没有编译这个代码,如果你有任何错误,请告诉我。