проверка, является ли CheckedListBox пустым

#c# #winforms

#c# #winforms

Вопрос:

У меня есть небольшая форма, в которой пользователь вводит имя некоторого элемента, а затем, когда он нажимает «Добавить», появляется инструкция, которая должна проверить, есть ли уже тот же элемент в поле Checkedlist.

Я ищу сообщение «if», которое проверяло, пуст ли список или содержит какой-либо элемент.

 private void button2_Click(object sender, EventArgs e)
{
    foreach (var item in checkedListBox1.Items)
    {
        if (itemName.Text == item.ToString())
        {
            DialogResult result = MessageBox.Show("?", "Question", MessageBoxButtons.YesNoCancel);
            if (result == DialogResult.Yes)
            {
                checkedListBox1.Items.Add(itemName.Text);
            }
            else if (result == DialogResult.No)
            {
                //clear the forms
            }
        }
        else
        {
            checkedListBox1.Items.Add(itemName.Text);
            timeLeft = 2;
            timer1.Start();
        }
    }
}
        //checkedListBox1.Items.Add(itemName.Text);
        //timeLeft = 2;
        //timer1.Start();
  

Комментарии:

1. Я не думаю, что вы можете добавлять элементы в список во время его перечисления

Ответ №1:

 if(checkedListBox1.Items.Count > 0) {
     // It contains items
} else {
     // It doesn't
}
  

Редактировать:
предназначен для проверки, является ли CheckedListBox пустым или нет, затем

 if(checkedListBox1.Items.Contains(theItemToCheck)) {
     // The item is already in the CheckedListBox
}
  

заключается в проверке, находится ли элемент уже в CheckedListBox.

Ответ №2:

Вы можете проверить, содержит ли ваш ListBox элемент, просто используя метод коллекции Contains:

 if (checkListBox1.Items.Contains(itemName.text))
{
    //do something
}
  

Ответ №3:

Что ж, ваш код не будет работать, поскольку вы не можете изменять коллекцию, которую вы повторяете. Попытка сделать это приведет к InvalidOperationException (Коллекция была изменена; операция перечисления может не выполняться.)

Вы должны завершить цикл, когда найдете свое соответствие, затем получите подтверждение пользователя и после этого измените список / коллекцию.

Итак:

  1. Попробуйте найти соответствие (и выйти из цикла, если вы перебираете коллекцию)
  2. Получить подтверждение пользователя
  3. Измените коллекцию

Ответ №4:

Можете ли вы взглянуть на LINQ?

 var exists = checkedListBox1.Items.Where(item => item == itemName.Text).Any();
if(exists)
  item exists
else
  item doesn't exists
  

Ответ №5:

Должно быть что-то вроде checkedListBox1.Товары.Подсчитайте .

Ответ №6:

Попробуйте:

 if(checkedListBox.Items.Count()>0)
{
    // it means you have items
} 
else
{
    // it means you have empty checkedListBox
}