#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
(Коллекция была изменена; операция перечисления может не выполняться.)
Вы должны завершить цикл, когда найдете свое соответствие, затем получите подтверждение пользователя и после этого измените список / коллекцию.
Итак:
- Попробуйте найти соответствие (и выйти из цикла, если вы перебираете коллекцию)
- Получить подтверждение пользователя
- Измените коллекцию
Ответ №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
}