2013-06-14 2 views
0

Я хочу знать, есть ли возможность фильтровать список. Я имею в виду это таким образом, что я добавляю элемент, и имя уже находится в списке, в котором вы получаете messagebox.show, который сообщает вам «Item уже в списке». И это не будет добавлено дважды.C# Есть ли возможность фильтровать список

+0

Что означает u, добавляя элемент в список? вы добавляете элементы к нему на кнопку? или что-то подобное ..? –

+0

Да, я добавляю элемент из другого списка. –

+0

перед добавлением элемента цикла через существующие элементы и проверьте, присутствует ли в нем новый. –

ответ

2

Вам не нужно повторять через в пункты, как коллекция предметов из ListBox реализует «Содержит» метод.

if (listBox1.Items.Contains(Item)) 
{ 
    MessageBox.Show("ListBox already contains Item"); 
} 

"Пункт" в этом случае товар из другого ListBox

Update. Вы могли бы написать:

if (listBox1.Items.Contains(listBox2.SelectedItem)) 
     { 
      MessageBox.Show("ListBox already contains Item"); 
     } 
     else 
     { 
      listBox1.Items.Add(listBox2.SelectedItem); 
     } 
+0

Что вы имеете в виду с ITEM, он не показывает синий для меня. –

+0

Sory не читал строку под кодом –

+0

«Item» - это элемент из другого списка ListBox. Я обновлю свой пост. –

0

здесь код попробовать образец и реализовать его в вас код

ListBox.ObjectCollection ListItem1= ListBox1.Items; 

if(!string.IsNullOrEmpty(SearchBox.Text)) 
{ 
     foreach (string str in ListItem1) 
     {     
     if (str.Contains(SearchBox.Text)) 
     { 
      msgbox; 
     } 
     } 
} 
+0

Что вы имеете в виду с помощью поисковой системы? –

+0

ваше текстовое поле, из которого вы вводите элемент – Anuj

+0

Я получаю эту ошибку: Ошибка оператор foreach не может работать с переменными типа «System.Windows.Forms.ListBox», потому что «System.Windows.Forms.ListBox» не содержит публичное определение для «GetEnumerator» –

0

Использование связывания данных может быть одним из решений:

List<string> SomeData=... 
var filtered=SomeData.Where(...); // <-- Your filtering condition here 
listBox1.DataSource = new BindingSource(choices, null); 
0

Внутри события/метод, который добавляет элементы списка внутри ListBox вы можете добавить что-то вроде:

// search for list item in the listbox which has the text 
ListItem li = theListBox.Items.FindByText("yourListItemName"); 

if (li != null) 
{ 
// if list item exists display message 
    MessageBox.Show("ListBox already contains item with the name"); 
} 
else 
{ 
    theListBox.Items.Add("yourListItemName"); 
} 
Смежные вопросы