-1

我有一个包含一些顺序项目的复选框,当我单击其中的项目并单击提交按钮时,所有项目都应存储在数据库中。

但是在这里我想确保用户只选择顺序项目,就像用户不能选择 a、b、d、f 他们应该总是选择 a、b、c、d、e、f。

任何人都可以请建议我完成此操作的逻辑。

4

2 回答 2

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;
                    }
                }
            }
        }

首先它将遍历所有项目,一旦循环在第二个项目上并被选中,它将继续检查上一个项目是否被选中,如果前一个项目被选中,它将继续,否则它将打破循环将布尔变量标记为假,然后在循环外我可以轻松检查标志是真还是假,并相应地显示消息。

于 2016-01-01T21:01:41.703 回答
0

It might not be the best logic, but it does the job at-least:

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;
    }

1st test case:

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

2nd test case:

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: I have not compiled this code, if you get any error please let me know.

于 2016-01-01T20:54:40.297 回答