如果ListBox包含,请不要添加

时间:2011-08-16 11:48:11

标签: c# listbox

我有一个方法:

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 个答案:

答案 0 :(得分:6)

试试这个

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");

答案 1 :(得分:3)

尝试:

if ( listBox.Items.Cast<ListItem>().Any(x => x.Text == "hello"))

答案 2 :(得分:2)

这样做:

var item = listBox.Items.FindByValue("hello") // or FindByText
if (item != null)
{
   DONT FILL
}

答案 3 :(得分:1)

你应该尝试一下

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#是合适的。

答案 4 :(得分:1)

我解决了问题..我刚使用myListBox.Items.Clear();

答案 5 :(得分:0)

listBox.Items.Contains("hello")应该可以正常工作。

答案 6 :(得分:0)

String newValue = "hello";
if (listBox1.Items.Cast<Object>().Any(x => x.ToString() == newValue))
{
    return;
}