我要做的是检查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;
}
}
答案 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;
}