Убедитесь, что последовательные элементы выбраны в флажок

У меня есть флажок, в котором есть несколько последовательно расположенных элементов, когда я нажимаю на элементы из него и нажимаю кнопку отправки, все элементы должны храниться в базе данных.

Но здесь я хочу убедиться, что пользователь выбирает только последовательные элементы, например, пользователь не может выбрать a,b,d,f, они всегда должны выбирать a,b,c,d,e,f.

Может кто-нибудь, пожалуйста, предложите мне логику для достижения этой цели.

2 ответа

Я был в состоянии сделать с одним циклом, как показано ниже:

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 и затем вне цикла, я могу легко проверить, является ли флаг истинным или ложным, и, соответственно, показать сообщение.

Возможно, это не лучшая логика, но она выполняет работу по крайней мере:

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

1-й контрольный пример:

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

2-й контрольный пример:

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: я не скомпилировал этот код, если вы получили ошибку, пожалуйста, дайте мне знать.

Другие вопросы по тегам