想要将字符串与listBox中的任何项进行比较

时间:2012-06-13 19:16:10

标签: c# winforms

我正在创建一个允许用户存储有关其类的信息的应用程序。我的应用程序中有一个按钮,允许用户输入信息,如果它与listBox中的任何项目匹配,那么它应该显示有关它的信息。

但我只能让它适用于listBox的特定项目位置,例如位置[0]等。

我的目标是如何比较listBox中的所有项目。任何帮助,将不胜感激。谢谢。

    private void button3_Click(object sender, EventArgs e)
    {
        if (listBox2.Items[0].ToString() == "PersonalInfo")
        {
            label.Text = "test";               
        }
    }

3 个答案:

答案 0 :(得分:6)

写一个循环来检查每个项目

foreach(var item in listBox2.Items)
{
  if (item.ToString()== "PersonalInfo")
  {
     label.Text = "test";
     break; // we don't want to run the loop any more.  let's go out              
  }    
}

答案 1 :(得分:6)

你已经硬编码检查Items[0]。您需要循环遍历列表中的所有项目,而不是仅查看一个项目。尝试这样的事情:

foreach(var item in listBox2.Items)
{
  if(item.ToString() == stringToMatch)
  {
    label.Text = "Found a match";
  }
}

一个替代的,更简单的实现(如果/当它找到匹配而不是继续检查每个项目时将停止)将是

if(listBox2.Items.Any(item => item.ToString() == stringToMatch))
{
  label.Text = "Found a match";
}

答案 2 :(得分:5)

你可以使用LINQ ......这样的事情:

if (listBox2.Items
            .Cast<object>()
            .Select(x => x.ToString())
            .Contains("PersonalInfo"))
{
    label.Text = "test";
}

或者,如果您想获得第一场比赛的详细信息:

var match = listBox2.Items
                    .Cast<object>()
                    .FirstOrDefault(x => x.ToString() == "PersonalInfo");
if (match != null)
{
    // Use match here
}