C#:if else语句与listView

时间:2012-11-22 15:13:12

标签: c# forms listview if-statement

我要做的是检查listView(column5)是否包含带有“是”字样的任何项目。如果它写的是'Great',如果该列在ALL中没有包含任何带有'Yes'字样的项,则写'Bad'。

现在发生的事情是我的程序只编写Bad(else语句),即使该列确实包含一个带有“Yes”字样的项目。

我该如何解决这个问题?:

foreach (ListViewItem item in listView1.Items) {
    if (item.SubItems[5].Text.Contains("Yes")) {
        // Do your work here
        labelContainsVideo2.Text = "GREAT";
        labelContainsVideo2.ForeColor = System.Drawing.Color.Green;
    } else {
        labelContainsVideo2.Text = "BAD";
        labelContainsVideo2.ForeColor = System.Drawing.Color.Red;
    }
}

3 个答案:

答案 0 :(得分:2)

也许是这样的?

foreach (ListViewItem item in listView1.Items)
{
  if (item.SubItems[5].Text.ToUpper().Contains("YES"))
  {
    // Do your work here
    labelContainsVideo2.Text = "GREAT";
    labelContainsVideo2.ForeColor = System.Drawing.Color.Green;
  }
  else
  {
    labelContainsVideo2.Text = "BAD";
    labelContainsVideo2.ForeColor = System.Drawing.Color.Red;
  }
}

另外,请记住,这样只计算最后item。如果要显示所有项目状态,则应该有标签数组或其他内容。如果您想知道任何项目是否包含“是”,您应该关注@ZombieSheep回答。

答案 1 :(得分:1)

如果列表中的最后一项不包含“是”,那么无论其他项目包含什么,输出都将为“BAD”。

试试这个......

string message = "BAD";
var msgColor = System.Drawing.Color.Red;
foreach (ListViewItem item in listView1.Items)
{
    if (item.SubItems[5].Text.Contains("Yes"))
    {
        message = "GREAT";
        msgColor = System.Drawing.Color.Green;
        break;   // no need to check any more items - we have a match!
    }
}
labelContainsVideo2.Text = message ;
labelContainsVideo2.ForeColor = msgColor;

答案 2 :(得分:1)

试试这个:

if(listView1.Items.Cast<ListViewItem>().Any(i => i.SubItems[5].Text.ToLower().Contains("yes"))){
    labelContainsVideo2.Text = "GREAT";
    labelContainsVideo2.ForeColor = System.Drawing.Color.Green;
}
else
{
    labelContainsVideo2.Text = "BAD";
    labelContainsVideo2.ForeColor = System.Drawing.Color.Red;
}