если ListBox содержит, не добавляйте - PullRequest
3 голосов
/ 16 августа 2011

У меня есть метод:

FillListBox();

Я вызываю этот метод из разных мест .. Но иногда случается, что вещи загружались дважды!

Теперь я пытаюсьсделать что-то вроде:

if (listBox.Items[1].ToString() == "hello")
{
   DO NOT FILL
}
else
{
   FILL
}

ЭТО НЕ РАБОТАЕТ!:(

Fault: InvalidArgument=Value of '1' is not valid for 'index'.
Parameter name: index

И что-то в этом роде:

if(listBox.Items.Contains("hello"))
{
   DONT FILL
}

Не работает тоже: (

Что я могу сделать?

Ответы [ 7 ]

6 голосов
/ 16 августа 2011

Попробуйте это

if(ListBox.NoMatches != listBox.FindStringExact("StringToFind"))
  {
      listBox.Items.Add("StringToAdd");
  }

или просто попробуйте это

 bool found = false;

 foreach (var item in listBox.Items)
 {
     if(item.ToString().Equals("StringToAdd"))
     {
         found = true;
         break;
     }
 }
if(!found)
    listBox.Items.Add("StringToAdd");
3 голосов
/ 11 августа 2013

Попробуйте:

if ( listBox.Items.Cast<ListItem>().Any(x => x.Text == "hello"))
2 голосов
/ 16 августа 2011

Сделайте это:

var item = listBox.Items.FindByValue("hello") // or FindByText
if (item != null)
{
   DONT FILL
}
1 голос
/ 18 августа 2011

Я решил проблему .. Я просто использовал myListBox.Items.Clear ();

1 голос
/ 16 августа 2011

Вы должны попробовать что-то вроде

foreach(ListItem item in listBox)
{ 
    if(item.Value == "YourFilter")
    { 
       DONT FILL 
    }
}

если ваш проект ASP

ты должен сделать

foreach(object item in listBox)
{ 
    if(item == "YourFilter")
    { 
       DONT FILL 
    }
}

если это WPF, не уверен, о каком ListBox вы говорите. Очевидно, что это не самое элегантное решение, но я думаю, что оно уместно, если вы только начинаете изучать C #.

0 голосов
/ 28 февраля 2017
String newValue = "hello";
if (listBox1.Items.Cast<Object>().Any(x => x.ToString() == newValue))
{
    return;
}
0 голосов
/ 16 августа 2011

listBox.Items.Contains("hello") должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...