5

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

Items[0]如果我按位置(例如)指定特定项目listBox,然后将其转换为字符串,我只能让它工作。我的目标是比较listBox.

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

3 回答 3

7

您需要遍历列表中的所有项目。尝试这样的事情:

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";
}
于 2012-06-13T19:20:18.470 回答
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              
  }    
}
于 2012-06-13T19:19:15.240 回答
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
}
于 2012-06-13T19:19:09.250 回答